Stap 37: Program aanbieding - Arduino Uno R3 (Coin Acceptor)
De Arduino Uno R3 leest als de munt ingevoegd ingang is aangesloten op de grond. De Arduino Uno R3 ook bepaalt de animatie weergeven en audio bestand te spelen en een 4-cijferige binaire code stuurt naar de Audio speler Arduino Uno R3 waarmee het gewenste audiobestand wordt afgespeeld. Naast het verzenden van de 4-cijferige binaire code, vraagt het ook een subroutine worden gespeeld aan de Maestro. Verwijzen naar de elektrische tekeningen voor aansluiting informatie. Momenteel ben ik alleen afgifte van drie verschillende shows, maar heb ik de mogelijkheid tot uitgifte van 15 verschillende shows op basis van de binaire code beschikbaar. Hieronder vindt u de code van de Arduino.
serieel naar maestro config
#include
#define txPin 6
#define rxPin 7
SoftwareSerial mySerial (rxPin, txPin);
VOID Setup
{
Serial.begin(9600); Inschakelen voor het debuggen van lokale seriële poort
Serieel naar maestro config
Serial.begin(9600);
Vertraging op macht omhoog om te voorkomen dat de trigger van effect
delay(10000);
Pin 3 als de input van de estafette ADAFruit Art Controller instellen Relais geactiveerd door munt mech.
pinMode (3, INPUT_PULLUP);
pinnen voor software seriële definiëren
pinMode (txPin, OUTPUT);
pinMode (rxPin, INPUT);
define pinnen naar music maker arduino te sturen
pinMode (14, OUTPUT); voor binaire, pin 22 is 1 pin 24 is 2, pin 28 is 4, pin 30 is 8
pinMode (15, OUTPUT); voor binaire, pin 22 is 1 pin 24 is 2, pin 28 is 4, pin 30 is 8
pinMode (16, OUTPUT); voor binaire, pin 22 is 1 pin 24 is 2, pin 28 is 4, pin 30 is 8
pinMode (17, OUTPUT); voor binaire, pin 22 is 1 pin 24 is 2, pin 28 is 4, pin 30 is 8
pinnen laag ingesteld
digitalWrite (14, laag); 1 2 4 8
digitalWrite (15, laag); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
Serial.println ("John Guarnero mevrouw K Fortune Teller munt Mech Arduno");
}
Toon nummer te spelen op de maestro en audio;
int ShowNumber = 1;
int Coin_Memory = 0;
int Allow_Run = 1; toegevoegd alow lopen aangezien als een relay-energiek, zou het soms initate een trigger als een munt is ingevoegd. Dit opgelost problemen met inductieve kick.
int Coin_Detected_Debounce = 0;
void loop
{
int Coin_Detected = digitalRead(3);
Als (Coin_Detected == 0)
{
Coin_Detected_Debounce = Coin_Detected_Debounce + 1;
Serial.println(Coin_Detected_Debounce);
}
Als (Coin_Detected == 1)
{
Coin_Detected_Debounce = 0;
}
Als (Coin_Detected_Debounce > = 150 & & Allow_Run == 1)
{
Coin_Memory = 1;
vertraging (1000);
}
{
Als (ShowNumber == 1 & & Coin_Memory == 1)
{
Allow_Run = 0;
Als (mySerial.available())
Serial.write(mySerial.Read());
Als (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); subroutine 1 uitgevoerd
mySerial.write((byte)0x00); apparaat-id
Waarde van binaire 1 verzenden Uno te spelen WAV bestand S1
digitalWrite (14, hoge); 1 2 4 8
digitalWrite (15, laag); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
vertraging (500);
digitalWrite (14, laag); 1 2 4 8
digitalWrite (15, laag); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
vertraging (30000); vertraging (30000); vertraging (30000); vertraging (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = ShowNumber + 1;
}
Als (ShowNumber == 2 & & Coin_Memory == 1)
{
Allow_Run = 0;
Als (mySerial.available())
Serial.write(mySerial.Read());
Als (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); 2-subroutine uitgevoerd
mySerial.write((byte)0x01); apparaat-id
Waarde van binaire 2 verzenden Uno te spelen WAV bestand S2
digitalWrite (14, laag); 1 2 4 8
digitalWrite (15, hoge); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
vertraging (500);
digitalWrite (14, laag); 1 2 4 8
digitalWrite (15, laag); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
vertraging (30000); vertraging (30000); vertraging (30000); vertraging (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = ShowNumber + 1;
}
Als (ShowNumber == 3 & & Coin_Memory == 1)
{
Allow_Run = 0;
Als (mySerial.available())
Serial.write(mySerial.Read());
Als (Serial.available())
mySerial.write(Serial.read());
mySerial.write(0xA7); 3-subroutine uitgevoerd
mySerial.write((byte)0x02); apparaat-id
Waarde van binaire 3 verzenden Uno te spelen WAV bestand S3
digitalWrite (14, hoge); 1 2 4 8
digitalWrite (15, hoge); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
vertraging (500);
digitalWrite (14, laag); 1 2 4 8
digitalWrite (15, laag); 1 2 4 8
digitalWrite (16, laag); 1 2 4 8
digitalWrite (17, laag); 1 2 4 8
vertraging (30000); vertraging (30000); vertraging (30000); vertraging (5000);
Coin_Memory = 0;
Allow_Run = 1;
ShowNumber = 1;
}
}
}