Schritt 37: Programm Listing - Arduino Uno R3 (Akzeptor-Münze)
Das Arduino Uno R3 liest, wenn die Münze eingefügt-Eingang auf Masse geschaltet ist. Das Arduino Uno R3 auch bestimmt die Show Animation und audio-Datei zu spielen und sendet eine 4 stelligen Binär-Code an den Audio-Player Arduino Uno R3, die die gewünschte Audiodatei abgespielt werden darstellt. Neben den 4 stelligen Binär-Code senden, fordert er auch eine Unterroutine, die Maestro gespielt werden. Beziehen sich auf die elektrische Zeichnungen für Anschluß-Informationen. Derzeit, ich bin nur die Ausstellung drei verschiedene Shows, aber ich habe die Möglichkeit, 15 verschiedene Shows auf Basis des binären Codes zur Verfügung. Der Arduino Code ist unten aufgeführt.
seriell zu Maestro config
#include
#define TxPin 6
#define RxPin 7
SoftwareSerial MySerial (RxPin, TxPin);
void setup()
{
Serial.Begin(9600); Aktivieren Sie für das Debuggen von lokaler Serial Port
Seriell zu Maestro config
Serial.Begin(9600);
Verzögerung auf macht bis zum Auslösen des Effekts zu vermeiden
Delay(10000);
Stellen Sie Pin 3 als die Eingabe von ADAFruit Kunst Controller-Relais. Relais ausgelöst durch Münze Mech.
PinMode (3, INPUT_PULLUP);
Pins für serielle Software definieren
PinMode (TxPin, Ausgang);
PinMode (RxPin, Eingabe);
definieren Sie Stifte an Musik Maker Arduino senden
PinMode (14, OUTPUT); für binäre Pin 22 ist 1, Pin 24 ist 2, Pin 28 ist 4, Klemme 30 ist 8
PinMode (15, OUTPUT); für binäre Pin 22 ist 1, Pin 24 ist 2, Pin 28 ist 4, Klemme 30 ist 8
PinMode (16, OUTPUT); für binäre Pin 22 ist 1, Pin 24 ist 2, Pin 28 ist 4, Klemme 30 ist 8
PinMode (17, OUTPUT); für binäre Pin 22 ist 1, Pin 24 ist 2, Pin 28 ist 4, Klemme 30 ist 8
Pins niedrig eingestellt
DigitalWrite (14, niedrig); 1 2 4 8
DigitalWrite (15, niedrig); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Serial.println ("John Guarnero Frau K Fortune Teller Münze Mech Arduno");
}
Anzahl der anzeigen zu bespielen, Maestro und Audio;
Int ShowNumber = 1;
Int Coin_Memory = 0;
Int Allow_Run = 1; Alow ausgeführt werden, da wenn ein Relais stromlos, wäre es manchmal trainierte einen Trigger wie eine Münze eingefügt wurde hinzugefügt. Dieses Problem behoben Probleme induktive Kick.
Int Coin_Detected_Debounce = 0;
void loop()
{
Int Coin_Detected = digitalRead(3);
Wenn (Coin_Detected == 0)
{
Coin_Detected_Debounce = Coin_Detected_Debounce + 1;
Serial.println(Coin_Detected_Debounce);
}
Wenn (Coin_Detected == 1)
{
Coin_Detected_Debounce = 0;
}
Wenn (Coin_Detected_Debounce > = 150 & & Allow_Run == 1)
{
Coin_Memory = 1;
Verzögerung (1000);
}
{
Wenn (ShowNumber == 1 & & Coin_Memory == 1)
{
Allow_Run = 0;
Wenn (mySerial.available())
Serial.Write(mySerial.read());
Wenn (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); 1 Unterroutine ausführen
mySerial.write((byte)0x00); Geräte-id
Senden Sie über binäre 1 UNO spielen WAV Datei S1
DigitalWrite (14, HIGH); 1 2 4 8
DigitalWrite (15, niedrig); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Verzögerung (500);
DigitalWrite (14, niedrig); 1 2 4 8
DigitalWrite (15, niedrig); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Verzögerung (30000); Verzögerung (30000); Verzögerung (30000); Verzögerung (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = ShowNumber + 1;
}
Wenn (ShowNumber == 2 & & Coin_Memory == 1)
{
Allow_Run = 0;
Wenn (mySerial.available())
Serial.Write(mySerial.read());
Wenn (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); Unterroutine 2 ausführen
mySerial.write((byte)0x01); Geräte-id
Senden Sie über binäre 2 UNO WAV Datei S2 spielen
DigitalWrite (14, niedrig); 1 2 4 8
DigitalWrite (15, HIGH); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Verzögerung (500);
DigitalWrite (14, niedrig); 1 2 4 8
DigitalWrite (15, niedrig); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Verzögerung (30000); Verzögerung (30000); Verzögerung (30000); Verzögerung (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = ShowNumber + 1;
}
Wenn (ShowNumber == 3 & & Coin_Memory == 1)
{
Allow_Run = 0;
Wenn (mySerial.available())
Serial.Write(mySerial.read());
Wenn (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); 3 Unterroutine ausführen
mySerial.write((byte)0x02); Geräte-id
Senden Sie über binäre 3 UNO spielen WAV Datei S3
DigitalWrite (14, HIGH); 1 2 4 8
DigitalWrite (15, HIGH); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Verzögerung (500);
DigitalWrite (14, niedrig); 1 2 4 8
DigitalWrite (15, niedrig); 1 2 4 8
DigitalWrite (16, niedrig); 1 2 4 8
DigitalWrite (17, niedrig); 1 2 4 8
Verzögerung (30000); Verzögerung (30000); Verzögerung (30000); Verzögerung (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = 1;
}
}
}