Robotsystemen barman - Arduino gebaseerd (10 / 12 stap)

Stap 10: Code

Ik was korte op tijd en zo veel van mijn code u slecht vindt geschreven en gebouwd. Ik zal later een code die makkelijker is gewijzigd, maar zal niet zitten kundig voor het testen met de barman, zoals het heeft is gedemonteerd voor onderdelen.

In het algemeen, de code is de input van het toetsenbord, evalueert de selectie met behulp van de schakeloptie/case verklaringen en uitdeelt dan een drankje. Elke drank wordt geschreven als een functie. Een drankje is gegoten door te sluiten de estafette en de pompen inschakelen voor een specifieke hoeveelheid tijd. Ik gecontroleerd de tijd die de Relais werden gesloten met de delay() functie in plaats van met behulp van timers. Dit maakt de code vreemd te schrijven wanneer ingrediënten ON voor verschillende hoeveelheden van tijd, en moeilijk zijn te wijzigen en uit te breiden. De nieuwe code vervangt delay() met timers.

De I2C bibliotheek en informatie kunnen hier worden gevonden: http://arduino-info.wikispaces.com/LCD-Blue-I2C

 #include // Comes with Arduino IDE#include LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C addressint keys[] ={ //Stores total keypad input 1, 2, 3, 10, 4, 5, 6, 11, 7, 8, 9, 12, -3,0, -2, 14}; //"123A456B789C*0#D"; int key; //Stores most recent key pressed boolean key_lockout=false; int order[4]; int value=0; //Initialize const int vodka=3; //Based on 6v clear pump, 13.3 sec/oz (20 sec/1.5 oz) const int gin=4; //Based on 12v black pumps, 25.3 sec/oz (38 sec/1.5 oz) const int whiskey=5; const int tripleSec=6; const int tequila=7; const int rum=8; const int water=9; const int simpleSyrup=10;void setup(){ Serial.begin(9600); lcd.begin(16,2); pinMode(vodka, OUTPUT); pinMode(gin, OUTPUT); pinMode(whiskey, OUTPUT); pinMode(tripleSec, OUTPUT); pinMode(tequila, OUTPUT); pinMode(rum, OUTPUT); pinMode(simpleSyrup, OUTPUT); pinMode(water, OUTPUT); digitalWrite(vodka, HIGH); digitalWrite(gin, HIGH); digitalWrite(whiskey, HIGH); digitalWrite(tripleSec, HIGH); digitalWrite(tequila, HIGH); digitalWrite(rum, HIGH); digitalWrite(simpleSyrup, HIGH); digitalWrite(water, HIGH); // ------- 3 blinks of backlight ------------- for(int i = 0; i< 3; i++) { lcd.backlight(); delay(250); lcd.noBacklight(); delay(250); } lcd.backlight(); // finish with backlight on }void loop(){ Beginning: { //-------- Write characters on the display ------------------ // NOTE: Cursor Position: (CHAR, LINE) start at 0 lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Enter your order"); delay(500); lcd.setCursor(0,1); lcd.print(" *-Clr, #-Enter"); delay(1000); //----------------------------------------------------------- value=0; for (int x=0; x<4; x++){ key=getKeypad(); //Get key pressed if(key==-1){ //If valid key not pressed restart iteration x=x-1; } else{ if(key!=14 && key!=12){ //If not CLEAR or ENTER value = (10*(value)) + (keys[key]); delay(10); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Item #"); delay(10); lcd.setCursor(6,0); lcd.print(value); delay(500); } else if(key==14){ //If ENTER, exit x=4; } else if (key==12){ //If CLEAR, restart x=-1; } } } lcd.clear(); lcd.setCursor(0,0); lcd.print(" Press # to"); delay(10); lcd.setCursor(0,1); lcd.print("Confirm drink"); delay(10); lcd.setCursor(14,1); lcd.print(value); do{ key=getKeypad(); } while(key!=12 && key!=14); if(key==12){ //Restart ordering process goto Beginning; //Return to the beginning of loop() } else if(key==14){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" Confirmed"); delay(1000); switch (value) { case 1: longIslandIcedTea(); break; case 2: jackAndCoke(); break; case 3: rumAndCoke(); break; case 4: capeCod(); break; case 5: cosmopolitan(); break; case 6: kamikazee(); break; case 7: screwdriver; break; case 8: highball(); break; case 9: gt(); break; case 10: vodkaTonic(); break; case 11: margarita(); break; case 12: seaBreeze(); break; } delay(5); // delay in between reads for stability } } }//--------Functions----------- int getKeypad(){ //Returns which key is pressed int ret=-1; boolean reset_lockout=false; if(analogRead(A0)<120) key_lockout=false; else if(!key_lockout){ delay(100); ret=15.5-(log((analogRead(A0)-183.9)/58.24)/0.1623);//+0.5; key_lockout=true; } return ret; }// Menu //Long Island Iced Tea int longIslandIcedTea(){ digitalWrite(vodka, LOW); delay(80); digitalWrite(gin, LOW); delay(80); digitalWrite(tripleSec, LOW); delay(80); //Serial.println("In the matrix"); digitalWrite(tequila, LOW); delay(80); digitalWrite(rum, LOW); delay(80); digitalWrite(water, LOW); delay(6600); digitalWrite(vodka, HIGH); delay(6400); digitalWrite(water, HIGH); digitalWrite(gin, HIGH); digitalWrite(tripleSec, HIGH); digitalWrite(tequila, HIGH); digitalWrite(rum, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add 1oz Sour Mix"); delay(10); lcd.setCursor(0,1); lcd.print(" then MIX"); delay(5000); lcd.clear(); lcd.print("Add ice and "); delay(10); lcd.setCursor(0,1); lcd.print("top with coke"); delay(3000); } }//Jack and Coke int jackAndCoke(){ //2 oz of whiskey Serial.println("Jack and Coke"); digitalWrite(whiskey, LOW); delay(10); digitalWrite(water, LOW); delay(4500); digitalWrite(water, HIGH); delay(33500); digitalWrite(whiskey, HIGH); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add ice and 2-5"); delay(10); lcd.setCursor(0,1); lcd.print("ounces of Coke"); delay(8000); }//Rum and Coke int rumAndCoke(){ //2 oz of rum Serial.println("Rum and Coke"); digitalWrite(rum, LOW); delay(10); digitalWrite(water, LOW); delay(4500); digitalWrite(water, HIGH); delay(33500); digitalWrite(rum, HIGH); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add ice and 2-5"); delay(10); lcd.setCursor(0,1); lcd.print("ounces of Coke"); delay(8000); }//Cape Cod int capeCod(){ //2 oz of vodka, 3 oz cranberry juice, lime wedge Serial.println("Cape Cod"); digitalWrite(vodka, LOW); delay(10); digitalWrite(water, LOW); delay(4500); digitalWrite(water, HIGH); delay(15500); digitalWrite(vodka, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add ice & 2-3 oz"); delay(10); lcd.setCursor(0,1); lcd.print("Cranberry Juice-"); delay(3000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("and a lime wedge"); delay(3000); } }//Bay Breeze int bayBreeze(){ //2 oz of vodka, 5 oz cranberry juice, 2 oz pineapple juice (or equal parts ~2.5 oz each), lime wedge Serial.println("Bay Breeze"); digitalWrite(vodka, LOW); delay(10); digitalWrite(water, LOW); delay(4500); digitalWrite(water, HIGH); delay(15500); digitalWrite(vodka, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add ice & 4-5 oz"); delay(10); lcd.setCursor(0,1); lcd.print("Cranberry Juice"); delay(4000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("and 2oz of"); lcd.setCursor(0,1); lcd.print("Pineapple Juice"); delay(3000); } }//Cosmopolitan int cosmopolitan(){ //1 1/2 ounces vodka or citrus vodka, 1 ounce Cointreau orange liqueur, 1/2 ounce fresh lime juice, 1/4 ounce cranberry juice Serial.println("Cosmopolitan"); digitalWrite(tripleSec, LOW); delay(10); digitalWrite(vodka, LOW); delay(10); digitalWrite(water, LOW); delay(13000); digitalWrite(water, HIGH); delay(7000); digitalWrite(vodka, HIGH); delay(5323); digitalWrite(tripleSec, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add 1/2 oz lime"); delay(10); lcd.setCursor(0,1); lcd.print(" Juice and MIX"); delay(4000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" Top with"); lcd.setCursor(0,1); lcd.print("Cranberry Juice"); delay(3000); } }//Kamikazee int kamikazee(){ //1 1/2 -1 ounces vodka, 1 ounce lime juice, 1 ounce triple sec, Lime wedge for garnish //shake Serial.println("Kamikazee"); digitalWrite(tripleSec, LOW); delay(10); digitalWrite(vodka, LOW); delay(10); digitalWrite(water, LOW); delay(13000); digitalWrite(water, HIGH); delay(7000); digitalWrite(vodka, HIGH); delay(5323); digitalWrite(tripleSec, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add 1 oz Lime"); delay(10); lcd.setCursor(0,1); lcd.print(" Juice and MIX"); delay(4000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" Add Ice"); lcd.setCursor(0,1); lcd.print("and lime wedge"); delay(3000); } }//Screwdriver int screwdriver(){ //1 1/2 -1 ounces vodka, 5 oz orange juice Serial.println("Screwdriver"); digitalWrite(vodka, LOW); delay(20000); digitalWrite(vodka, HIGH); for (int x=0; x<2; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add Ice and ~5"); delay(10); lcd.setCursor(0,1); lcd.print("oz Orange Juice"); delay(3000); } }//Highball int highball(){ //1.5 ounces whiskey, ginger ale Serial.println("Highball"); digitalWrite(whiskey, LOW); delay(38000); digitalWrite(whiskey, HIGH); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" Add Ice and"); delay(10); lcd.setCursor(0,1); lcd.print(" Ginger Ale"); delay(8000); }//Gin and Tonic int gt(){ //1.5 ounces gin, 2.25 tonic or 2:3, 1/4 oz lime juice Serial.println("Gin and Tonic"); digitalWrite(gin, LOW); delay(38000); digitalWrite(gin, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add Ice, 2-5 oz"); delay(10); lcd.setCursor(0,1); lcd.print("of Tonic and..."); delay(3000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" 1/4 oz"); lcd.setCursor(0,1); lcd.print(" Lime Juice"); delay(3000); } }//Vodka Tonic int vodkaTonic(){ //1.5 ounces vodka, 3-4.5 tonic, 1/4 oz lime juice Serial.println("Vodka Tonic"); digitalWrite(vodka, LOW); delay(20000); digitalWrite(vodka, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add Ice, 2-5 oz"); delay(10); lcd.setCursor(0,1); lcd.print("of Tonic and..."); delay(3000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" 1/4 oz"); lcd.setCursor(0,1); lcd.print(" Lime Juice"); delay(3000); } }//Margarita int margarita(){ digitalWrite(tripleSec, LOW); delay(10); digitalWrite(tequila, LOW); delay(10); digitalWrite(water, LOW); delay(13000); digitalWrite(water, HIGH); delay(12700); digitalWrite(tripleSec, HIGH); delay(12870); digitalWrite(tequila, HIGH); for (int x=0; x<3; x++){ lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Add 1/2 oz of"); delay(10); lcd.setCursor(0,1); lcd.print("Lime Juice &..."); delay(3000); lcd.clear(); lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print(" MIX"); lcd.setCursor(0,1); lcd.print(" then add ice "); delay(4000); } }//Sea Breeze int seaBreeze(){ //1.35 Vodka, 4 Cranberry juice, 1 Grapefruit juice Serial.println("Sea Breeze"); digitalWrite(vodka, LOW); delay(18000); digitalWrite(vodka, HIGH); } 

Gerelateerde Artikelen

Arduino gebaseerd Bi-color LED Matrix Audio Spectrum Visualizer

Arduino gebaseerd Bi-color LED Matrix Audio Spectrum Visualizer

Nadat we met de Bi-color LED Matrix Driver Module kit kwamen, we hebben ons gebogen rond voor interessante projecten te werken.Bent u wellicht geïnteresseerd in een aantal van de projecten die we hebben opgemaakt op instructables met behulp van deze
Arduino gebaseerde Bi-color LED Matrix Tetris Game

Arduino gebaseerde Bi-color LED Matrix Tetris Game

Een van de elektronica DIY kit jolliFactory kwam omhoog met is de Bi-color LED Matrix Driver Module Kit. Deze module is ontworpen om kunnen keten-zodat u kan serieschakeling de modules samen aan het aantal modules moet u past bij uw project.De volgen
Arduino gebaseerde Smart Home IOT systeem

Arduino gebaseerde Smart Home IOT systeem

Hallo, ik ben Michalis Vasilakis uit Ardumotive.com en in deze handleiding Instructables zal ik u tonen hoe kunt u gemakkelijk maken uw eigen smart home systeem op basis van Arduino uno en een Ethernet-module (of schild).U zal zitten kundig voor gebr
Monteren van een Arduino gebaseerd rook / hitte Alarm

Monteren van een Arduino gebaseerd rook / hitte Alarm

Zoals je uit deze blog entry zien kunt ik ontwikkelde de basis voor dit project twee jaar geleden als een alarm / uitschakeling schakelaar voor de RepRap 3D Printer kit die ik had net samengesteld... en dat had gerookt!Het eerste ProjectIk heb sindsd
Arduino gebaseerde Split-Flap game

Arduino gebaseerde Split-Flap game

We hebben een grote traditie van de Nederlandse vakantie genaamd sinterklaas (5 december, dit is dat wat de Amerikaanse Santa is gebaseerd op). Voor de oudere "non-believers" we verrassingen. Het doel is te kopen van een klein cadeautje, maar ee
Zeven Segment Display Thermometer - Arduino gebaseerd

Zeven Segment Display Thermometer - Arduino gebaseerd

Vandaag zal ik u tonen hoe te maken van uw eigen 7 segment - 2 digit - thermometer met Arduino uno en DS18B20 temperatuursensor.Ik verkies om te bouwen van mijn eigen arduino gebaseerd circuit met behulp van de ATmega328p uno bezitter, maar dit is op
AbHhGD - de Arduino gebaseerde digitale Gaming apparaat

AbHhGD - de Arduino gebaseerde digitale Gaming apparaat

Dit is een write-up op mijn Arduino gebaseerde hand-held gaming apparaat. Ik realiseer me het is een enigszins poshy verklaring maar hey, het is Arduino gebaseerd, het is draagbaar en het is een apparaat dat spelletjes speelt!Stap 1: Een hand-held ga
Arduino gebaseerde afstand maatregel vak

Arduino gebaseerde afstand maatregel vak

Hallo, in dit project zal ik u tonen hoe te bouwen uw eigen doos meter afstand met Arduino uno en een ultrasone sensor.Voordat u begint, zorg ervoor dat u hebt:Arduino unoHC-SR04 ultrasone SensorLCD 16 x 2Officiële website: http://www.ardumotive.com/
Arduino gebaseerde schaduw Alarm

Arduino gebaseerde schaduw Alarm

Schaduw alarmen worden meestal gebruikt voor bescherming tegen diefstal. Een schaduw alarm is een apparaat dat een geluidssignaal klinkt wanneer een schaduw valt. Hier beschreven is een eenvoudige schakeling van een arduino gebaseerd schaduw alarm. D
Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

ProjectoverzichtStudenten op New Lothrop High School in Michigan hebben samengewerkt om te bouwen van een lage hoogte remote sensing platform genaamd een "Aeropod" en het uitgerust met een "Arduino" gebaseerd weer instrument om sfeervo
Arduino gebaseerd Robotic Car(wireless controls+Autonomous)

Arduino gebaseerd Robotic Car(wireless controls+Autonomous)

Dit instructable is over een Arduino gebaseerd Robotic auto die gebruik maakt van Arduino Arduino,, Arduino programmeertaal, motor bestuurder, een LCD-scherm te zien wat de huidige status van de auto en zelfs een Bluetooth-module voor draadloze commu
Arduino gebaseerd donker Switch

Arduino gebaseerd donker Switch

Arduino gebaseerde donkere Switch is een eenvoudig project die in feite voor Arduino-beginners die net begonnen met leren gebruiken van Arduino.Zoals de naam suggereert in dit project zullen we ON draaien de lichten automatisch als de omgevingstemper
ARDUINO gebaseerd IR afstandsbediening robot

ARDUINO gebaseerd IR afstandsbediening robot

Hallo iedereen. Dit mijn nieuwe project IR afstandsbediening robot met behulp van arduino. Dit is een eenvoudig ontwerp robot die kunt u gemakkelijk bouwen.Stap 1: vereisten:Projecteisen:Arduino uno Tsop1738 (ir ontvanger)H brug ic (L293D)Twee gelijk
Arduino gebaseerde Bi-color LED Matrix Snake Game

Arduino gebaseerde Bi-color LED Matrix Snake Game

We laten zien hoe een Arduino gebaseerd Bi-color LED Matrix Tetris spel kan worden gebouwd in ons laatste instructable. We waren heel verrassing het werd gekenmerkt op de homepage van Instructables en vrij een handvol favorieten hebt opgeslaen gedure