Fru Karlsson skelett Fortune Teller (37 / 40 steg)
Steg 37: Programmet notering - Arduino Uno R3 (mynt Acceptor)
Arduino Uno R3 läser när myntet in indata är ansluten till marken. Arduino Uno R3 också bestämmer Visa animation och ljudfil att spela och skickar en 4 siffrig binär kod till den Audio Player Arduino Uno R3 som representerar den önskad ljudfilen som ska spelas. Utöver att skicka den 4-siffriga binär kod begär också en subrutin att spelas till Maestro. Hänvisa till elritningar hookup information. För närvarande är jag endast utfärdar tre olika shower men jag har möjlighet att utfärda 15 olika shower baserade på binär kod tillgänglig. Arduino koden är listade nedan.
seriell till maestro config
#include
#define txPin 6
#define rxPin 7
SoftwareSerial mySerial (rxPin, txPin);
void setup()
{
Serial.BEGIN(9600); Aktivera för lokal serieport felsökning
Seriell till maestro config
Serial.BEGIN(9600);
Försening på strömmen upp till undvika utlösande effekt
Delay(10000);
Ställ in pinkodsskydd 3 som indata från ADAFruit Art Controller reläet. Relay utlöses av mynt mech.
pinMode (3, INPUT_PULLUP).
definiera pins för mjukvaran följetong
pinMode (txPin, produktionen);
pinMode (rxPin, ingång);
definiera stiften för att skicka till musik maker arduino
pinMode (14, OUTPUT); för binära, pin 22 är 1, pin 24 är 2, pin 28 är 4, stift 30 är 8
pinMode (15, OUTPUT); för binära, pin 22 är 1, pin 24 är 2, pin 28 är 4, stift 30 är 8
pinMode (16, OUTPUT); för binära, pin 22 är 1, pin 24 är 2, pin 28 är 4, stift 30 är 8
pinMode (17, OUTPUT); för binära, pin 22 är 1, pin 24 är 2, pin 28 är 4, stift 30 är 8
lågt satt stift
digitalWrite (14, låg); 1 2 4 8
digitalWrite (15, låg); 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
Serial.println ("John Guarnero fru K Fortune Teller mynt Mech Arduno");
}
Visa nummer att spela på maestro och ljud;
int ShowNumber = 1;
int Coin_Memory = 0;
int Allow_Run = 1; lagt till alow kör sedan när ett relä de strömförande, det skulle ibland Malltyp en utlösare som ett mynt sattes in. Detta löst några induktiva kick frågor.
int Coin_Detected_Debounce = 0;
void loop()
{
int Coin_Detected = digitalRead(3);
om (Coin_Detected == 0)
{
Coin_Detected_Debounce = Coin_Detected_Debounce + 1.
Serial.println(Coin_Detected_Debounce);
}
om (Coin_Detected == 1)
{
Coin_Detected_Debounce = 0;
}
om (Coin_Detected_Debounce > = 150 & & Allow_Run == 1)
{
Coin_Memory = 1;
fördröjning (1000);
}
{
om (ShowNumber == 1 & & Coin_Memory == 1)
{
Allow_Run = 0;
om (mySerial.available())
Serial.write(mySerial.Read());
om (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); köra subrutin 1
mySerial.write((byte)0x00); enhets-id
Skicka värdet binära 1 till Uno att spela WAV-fil S1
digitalWrite (14, hög). 1 2 4 8
digitalWrite (15, låg); 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
fördröjning (500).
digitalWrite (14, låg); 1 2 4 8
digitalWrite (15, låg); 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
fördröjning (30000); fördröjning (30000); fördröjning (30000); fördröjning (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = ShowNumber + 1.
}
om (ShowNumber == 2 & & Coin_Memory == 1)
{
Allow_Run = 0;
om (mySerial.available())
Serial.write(mySerial.Read());
om (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); köra subrutin 2
mySerial.write((byte)0x01); enhets-id
Skicka värdet binära 2 till Uno att spela WAV-fil S2
digitalWrite (14, låg); 1 2 4 8
digitalWrite (15, hög). 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
fördröjning (500).
digitalWrite (14, låg); 1 2 4 8
digitalWrite (15, låg); 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
fördröjning (30000); fördröjning (30000); fördröjning (30000); fördröjning (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = ShowNumber + 1.
}
om (ShowNumber == 3 & & Coin_Memory == 1)
{
Allow_Run = 0;
om (mySerial.available())
Serial.write(mySerial.Read());
om (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); köra subrutin 3
mySerial.write((byte)0x02); enhets-id
Skicka värdet av binära 3 till Uno att spela WAV-fil S3
digitalWrite (14, hög). 1 2 4 8
digitalWrite (15, hög). 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
fördröjning (500).
digitalWrite (14, låg); 1 2 4 8
digitalWrite (15, låg); 1 2 4 8
digitalWrite (16, låg); 1 2 4 8
digitalWrite (17, låg); 1 2 4 8
fördröjning (30000); fördröjning (30000); fördröjning (30000); fördröjning (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = 1;
}
}
}