Konvertera din POP/dryck maskin att använda RFID med Arduino (5 / 6 steg)
Steg 5: Vending en drink
Koden visas nedan är hur en drink faktiskt är utspridd. När RFID-etiketten läses och SD-kortet ger tillbaka det belopp som återstår på RFID-etiketten, går maskinen in i rutinen SelectDrink sub. Personen har 5500 millisekunder att besluta / trycker en drink innan maskinen går tillbaka till redo att Scan. När deras dryck väljs sedan pressar öppen reläet till för readytovend och sedan öppnas den motsvarande dricka relän som om de tryckte på knappen.
void SelectDrink()
{
soundOneUp();
långa mil = millis();
lång timer = 0;
LCD.Clear();
LCD.Print ("kort Amt $");
LCD.Print(myNewCredit);
lcd.setCursor(0,1);
LCD.Print ("Välj en Drink");
Serial.Print ("kort värde $");
Serial.println(myNewCredit);
Serial.println ("Välj en drink");
int buttonpressed = 0;
samtidigt (buttonpressed < 1)
{
timer = millis();
för (int thisPin = 0; thisPin < drinkPinCount; thisPin ++)
{
buttonState [thisPin] = digitalRead(buttonPins[thisPin]);
buttonpressed += buttonState [thisPin];
}
om (timer - mil > 5500) {buttonpressed = 1;}
}
om (timer - mil < 5500)
{
för (int thisPin = 0; thisPin < drinkPinCount; thisPin ++)
{
om (buttonState [thisPin] == hög)
{
Buzz (NOTE_C4, 8); Startljudet
IF(myNewCredit >=drinkCost[thisPin])
{
Serial.Print(drinkName[thisPin]);
Serial.Print ("ny kredit $");
Serial.println (myNewCredit - drinkCost[thisPin]);
myNewCredit = myNewCredit - drinkCost [thisPin];
LCD.Clear();
LCD.Print ("kort på $");
LCD.Print(myNewCredit);
lcd.setCursor(0,1);
LCD.Print("$");
LCD.Print(drinkCost[thisPin]);
LCD.Print("");
LCD.Print(drinkName[thisPin]);
UpdateAccount();
ReadytoVend();
lcd.setCursor(0,1);
LCD.Print ("Vending dricka!");
pinMode (drinkPins [thisPin], produktionen);
Delay(300);
digitalWrite (drinkPins [thisPin], låg);
Delay(300);
digitalWrite (drinkPins [thisPin], hög);
}
annat
{
NotEnoughFunds();
}
}
}
}
annat
{
TooktoLong();
}
}