Roboten Bartender - Arduino baserat (10 / 12 steg)

Steg 10: kod

Jag var kort om tid och så mycket av min kod hittar du dåligt skriven och konstruerat. Jag kommer att lägga upp en kod senare som är mer lätt ändras, men kommer inte att kunna testa det med bartendern som det har varit demonteras för delar.

I allmänhet koden tar input från knappsatsen, utvärderar markeringen med växeln/fall uttalanden och sedan doserar en drink. Varje dryck är skriven som en funktion. En drink hälls genom att stänga reläet och slår pumpar på specifika belopp av tid. Jag kontrollerade tiden reläer stängdes med funktionen delay() istället för att använda timers. Detta gör koden konstigt att skriva när ingredienser är på för olika mängder av tid, och svårt att ändra och expandera. Den nya koden ersätter delay() med timers.

Den I2C bibliotek och information kan hittas här: http://arduino-info.wikispaces.com/LCD-Blue-I2C

#include / / kommer med Arduino IDE
#include

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positiv); Ställa in LCD-I2C adress
int nycklar [] = {//Stores totala knappsatsen ingång
1, 2, 3, 10, 4, 5, 6, 11, 7, 8, 9, 12,-3,0, -2, 14}; "123A456B789C * 0 #D";
int nyckel; Butiker senaste nedtryckt
booleska key_lockout = false;
int ordning [4].
int värde = 0;
Initiera
CONST int vodka = 3; Baserat på 6v klart pump, 13,3 SEK/oz (20 SEK/1,5 oz)
CONST int gin = 4; Baserat på 12v svart pumpar, 25.3 SEK/oz (38 SEK/1,5 oz)
CONST int whiskey = 5;
CONST int tripleSec = 6;
CONST int tequila = 7.
CONST int Rom = 8.
CONST int vatten = 9.
CONST int simpleSyrup = 10;
void setup() {
Serial.BEGIN(9600);
LCD.BEGIN(16,2);
pinMode (vodka, produktionen);
pinMode (gin, OUTPUT);
pinMode (whiskey, produktionen);
pinMode (tripleSec, produktionen);
pinMode (tequila, produktionen);
pinMode (Rom, produktionen);
pinMode (simpleSyrup, produktionen);
pinMode (vatten, OUTPUT);
digitalWrite (vodka, hög);
digitalWrite (gin, hög);
digitalWrite (whiskey, hög);
digitalWrite (tripleSec, hög);
digitalWrite (tequila, hög);
digitalWrite (Rom, hög).
digitalWrite (simpleSyrup, hög);
digitalWrite (vatten, hög).
---3 blinkar av bakgrundsbelysning---
för (int jag = 0; jag < 3; i ++)
{
LCD.backlight();
Delay(250);
lcd.noBacklight();
Delay(250);
}
LCD.backlight(); avsluta med bakgrundsbelysning på
}
void loop() {
Början:
{
---Skriv tecken på displayen---
Obs: Markörens Position: (CHAR, linje) börjar på 0
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Enter din order");
Delay(500);
lcd.setCursor(0,1);
LCD.Print ("*-Clr, #-ange");
Delay(1000);
//-----------------------------------------------------------

värde = 0;
för (int x = 0; x < 4; x ++) {
Key=getKeypad(); Få nedtryckt
IF(Key==-1) {//If giltig nyckel inte pressad omstart iteration
x = x-1;
}
annat {
om (nyckel! = 14 & & nyckel! = 12) {//If inte klar eller RETUR
värde = (10*(value)) + (keys[key]);
Delay(10);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("element #");
Delay(10);
lcd.setCursor(6,0);
LCD.Print(Value);
Delay(500);
}
annat if(key==14) {//If ENTER, utgång
x = 4.
}
annars om (nyckel == 12) {//If klar, starta om
x =-1;
}
}
}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("Tryck på # till");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("bekräfta dryck");
Delay(10);
lcd.setCursor(14,1);
LCD.Print(Value);
göra {
Key=getKeypad();
}
medan (nyckel! = 12 & & nyckel! = 14);
IF(Key==12) {//Restart beställningsprocessen
gå till början; Tillbaka till början av loop()
}
annat if(key==14) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("bekräftat");
Delay(1000);
Växla (värde) {
fall 1:
longIslandIcedTea();
bryta;
fall 2:
jackAndCoke();
bryta;
fall 3:
rumAndCoke();
bryta;
fall 4:
capeCod();
bryta;
fall 5:
Cosmopolitan();
bryta;
fall 6:
Kamikazee();
bryta;
fall 7:
skruvmejsel;
bryta;
mål 8:
Highball();
bryta;
mål 9:
gt();
bryta;
mål 10:
vodkaTonic();
bryta;
mål 11:
Margarita();
bryta;
ärende 12:
seaBreeze();
bryta;
}
Delay(5); dröjsmål i mellan läser för stabilitet
}
}
}
---Funktioner---
int getKeypad() {//Returns vilken tangent trycks
int ret =-1;
booleska reset_lockout = false;
IF(analogRead(a0) < 120)
key_lockout = false;
annat if(!key_lockout) {
Delay(100);
ret=15.5-(log((analogRead(a0)-183.9)/58.24)/0.1623);//+0.5;
key_lockout = sant;
}
återvändande ret;
}
Menyn
Long Island Iced Tea
int longIslandIcedTea() {
digitalWrite (vodka, låg);
Delay(80);
digitalWrite (gin, låg);
Delay(80);
digitalWrite (tripleSec, låg);
Delay(80);
Serial.println ("i matrisen");
digitalWrite (tequila, låg);
Delay(80);
digitalWrite (Rom, låg).
Delay(80);
digitalWrite (vatten, låg).
Delay(6600);
digitalWrite (vodka, hög);
Delay(6400);
digitalWrite (vatten, hög).
digitalWrite (gin, hög);
digitalWrite (tripleSec, hög);
digitalWrite (tequila, hög);
digitalWrite (Rom, hög).
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("lägga till 1oz Sour Mix");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("sedan blandning");
Delay(5000);
LCD.Clear();
LCD.Print ("Lägg ice och");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("top med koks");
Delay(3000);
}
}
Jack och cola
int jackAndCoke() {
2 oz av whisky
Serial.println ("Jack och cola");
digitalWrite (whiskey, låg);
Delay(10);
digitalWrite (vatten, låg).
Delay(4500);
digitalWrite (vatten, hög).
Delay(33500);
digitalWrite (whiskey, hög);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print (Lägg till is och 2-5");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("uns av koks");
Delay(8000);
}
Rom och cola
int rumAndCoke() {
2 oz av Rom
Serial.println ("Rom och cola");
digitalWrite (Rom, låg).
Delay(10);
digitalWrite (vatten, låg).
Delay(4500);
digitalWrite (vatten, hög).
Delay(33500);
digitalWrite (Rom, hög).
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print (Lägg till is och 2-5");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("uns av koks");
Delay(8000);
}
Cape Cod
int capeCod() {
2 oz av vodka, 3 oz cranberry juice, limeklyfta
Serial.println ("Cape Cod");
digitalWrite (vodka, låg);
Delay(10);
digitalWrite (vatten, låg).
Delay(4500);
digitalWrite (vatten, hög).
Delay(15500);
digitalWrite (vodka, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Lägg till ice & 2-3 oz");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("Cranberry Juice-");
Delay(3000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print (och en limeklyfta");
Delay(3000);
}
}
Bay Breeze
int bayBreeze() {
2 oz av vodka, 5 oz tranbärsjuice, 2 oz ananasjuice (eller lika delar ~2.5 oz varje), limeklyfta
Serial.println ("Bay Breeze");
digitalWrite (vodka, låg);
Delay(10);
digitalWrite (vatten, låg).
Delay(4500);
digitalWrite (vatten, hög).
Delay(15500);
digitalWrite (vodka, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Lägg till ice & 4-5 oz");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("tranbärsjuice");
Delay(4000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print (och 2oz av");
lcd.setCursor(0,1);
LCD.Print ("ananasjuice");
Delay(3000);
}
}
Kosmopolitiska
int cosmopolitan() {
1 1/2 uns vodka eller citrus vodka, 1 uns Cointreau apelsin likör, 1/2 ounce färsk limejuice, 1/4 uns cranberry juice
Serial.println("Cosmopolitan");
digitalWrite (tripleSec, låg);
Delay(10);
digitalWrite (vodka, låg);
Delay(10);
digitalWrite (vatten, låg).
Delay(13000);
digitalWrite (vatten, hög).
Delay(7000);
digitalWrite (vodka, hög);
Delay(5323);
digitalWrite (tripleSec, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Lägg till 1/2 oz lime");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("Juice och MIX");
Delay(4000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Top med");
lcd.setCursor(0,1);
LCD.Print ("tranbärsjuice");
Delay(3000);
}
}
Kamikazee
int kamikazee() {
1 1/2-1 uns vodka, 1 uns limejuice, 1 uns triple sec, limeklyfta till garnering
Shake
Serial.println("Kamikazee");
digitalWrite (tripleSec, låg);
Delay(10);
digitalWrite (vodka, låg);
Delay(10);
digitalWrite (vatten, låg).
Delay(13000);
digitalWrite (vatten, hög).
Delay(7000);
digitalWrite (vodka, hög);
Delay(5323);
digitalWrite (tripleSec, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Add 1 oz Lime");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("Juice och MIX");
Delay(4000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Lägg till is");
lcd.setCursor(0,1);
LCD.Print (och limeklyfta");
Delay(3000);
}
}
Skruvmejsel
int screwdriver() {
1 1/2-1 uns vodka, 5 oz orange juice
Serial.println("Screwdriver");
digitalWrite (vodka, låg);
Delay(20000);
digitalWrite (vodka, hög);
för (int x = 0; x < 2; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("lägga till is och ~ 5);
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("oz Orange Juice");
Delay(3000);
}
}
Highball
int highball() {
1.5 uns whiskey, ginger ale
Serial.println("Highball");
digitalWrite (whiskey, låg);
Delay(38000);
digitalWrite (whiskey, hög);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("lägga till is och");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("Ginger Ale");
Delay(8000);
}
Gin och Tonic
int gt() {
1.5 uns gin, 2,25 tonic eller 2:3, 1/4 oz limejuice
Serial.println ("Gin och Tonic");
digitalWrite (gin, låg);
Delay(38000);
digitalWrite (gin, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("lägga till is, 2-5 oz");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("av Tonic och...");
Delay(3000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("1/4 oz");
lcd.setCursor(0,1);
LCD.Print ("limejuice");
Delay(3000);
}
}
Vodka Tonic
int vodkaTonic() {
1.5 uns vodka, 3-4.5 tonic, 1/4 oz limejuice
Serial.println ("Vodka Tonic");
digitalWrite (vodka, låg);
Delay(20000);
digitalWrite (vodka, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("lägga till is, 2-5 oz");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("av Tonic och...");
Delay(3000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("1/4 oz");
lcd.setCursor(0,1);
LCD.Print ("limejuice");
Delay(3000);
}
}
Margarita
int margarita() {
digitalWrite (tripleSec, låg);
Delay(10);
digitalWrite (tequila, låg);
Delay(10);
digitalWrite (vatten, låg).
Delay(13000);
digitalWrite (vatten, hög).
Delay(12700);
digitalWrite (tripleSec, hög);
Delay(12870);
digitalWrite (tequila, hög);
för (int x = 0; x < 3; x ++) {
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("Lägg till 1/2 oz av");
Delay(10);
lcd.setCursor(0,1);
LCD.Print ("Lime Juice &...");
Delay(3000);
LCD.Clear();
lcd.setCursor(0,0); Börja med tecknet 4 på rad 0
LCD.Print ("blandning");
lcd.setCursor(0,1);
LCD.Print ("sedan Lägg till is");
Delay(4000);
}
}
Sea Breeze
int seaBreeze() {
1,35 vodka, 4 tranbärsjuice, grapefruktjuice 1
Serial.println ("havsbris");
digitalWrite (vodka, låg);
Delay(18000);
digitalWrite (vodka, hög);
}

Se Steg
Relaterade Ämnen

Sund trycksensor för Arduino baserat på ZX-ljudkort

Det finns ett antal ljud givare för Arduino, några av dem ganska billigt så när jag behövde en, tänkte jag att bygga en själv var vansinne och jag ut för att köpa en.Första tanke var ju att kolla Dealextreme.com så de alltid har en hissa godsaker til...

3 x 3 LED Cube programmering tips (Arduino baserat)

hur man gör att cube gör vad du vill ha den till!Jag följde de instructable här och byggde en 3 x 3 LED cube drivs av en Arduino. Jag blev glad! Men det kunde endast göra en rutin. Igen och igen och igen och igen och igen... Så jag bestämde mig att f...

Trådlös, hinder upptäcka, pipa roboten med Arduinos!

Detta är ett trådlöst styrd, autonoma hinder upptäcka robot!För ett tag sedan jag hade gjort detta Instructable och ville göra några stora uppgraderingar sedan dess.Följande är robotens funktioner:-1.he är trådlöst kontrollerade med 433 MHz Tx/Rx mod...

Nunchuck tal-enhet. Mycket låg kostnad TVout/Arduino baserat

syfte:Lägsta möjliga kostnad text-till-tal enhet för funktionshindrade, eventuellt i utvecklingsländerna. Fristående (dvs inte PC baserat)Inmatningsenhet:Oförändrad Wii Nunchuck.I det här exemplet jag använder tummen joystick för att navigera på text...

Enklaste Arduino baserat Sound / blixt / Thunder Trigger

detta är den enklaste ljud/blixtnedslag trigger baserat på Arduino.Delar som behövs:1 2N39041 1K resistor1 Piezo Summer som sund sensor1 Photodiode BPW21R för blixtnedslag trigger1 ArduinoInstruktioner:Steg 1: Anslut den svarta kabeln av Piezo till G...

24 x 10 ledde matrisen (Arduino baserat)

Jag har sett en hel del instructables som visar hur man bygger ledde matriser, men jag skulle vilja belysa två av dem, eftersom detta bygga bygger på att två bygger.Göra en 24 X 6 ledde matrisen av Syst3mXochGör en giant LED-tecken! (24 x 8 matris) a...

Interaktiva Halloween pumpa (Arduino baserat)

IDÉNEn pumpa som glöder, skakar och skriker... [video]Det är Halloween, så naturligt att vi var tvungna att ha ett projekt som.Tanken är att ha en pumpa, som känner av närvaron av en person som försöker komma till godis, och sedan använder olika "skr...

Arduino baserat dörr Minder för dragiga hus.

jag bor i ett hus med gott om, ska vi säga, naturlig ventilation. Under vintern finns en veritabel vind som blåser genom huset varje gång badrumsdörren lämnas öppen. Någon uppvärmning av huset som kan ha inträffat är helt ogjort varje gång någon glöm...

Raspberry pi Controller automatisk dricka dispensering roboten Bartender

Denna bartender använder trycksatt flaskor och magnetventilerna styrs av en raspberry pi att avstå från drycker. Användaren kan interagera med GUI på pi att välja deras dryck av val, de kommer att uppmanas att lägga till alla nödvändiga garnering, se...

RTC ds1307 Arduino baserat larmsystem

Hårdvaran är standarden setup och är som följer.DS1307 IC x1.32MHz kristall x1.3V-batteri för backup x1.0.1uf kondensator x1.Arduino Uno x1.Hoppare ledningarHögtalare x1Steg 1: Gör en arduino prototyp styrelse Steg 2: Att göra DS1307 kretsSteg 3: Mon...

Sju Segment Display termometer - Arduino baserat

Idag kommer jag visa dig hur man gör egna 7 segment - 2 siffrigt - termometer med Arduino uno och DS18B20 temperaturgivare.Jag föredrar att bygga mitt eget arduino baserade krets med ATmega328p uno innehavaren, men detta är frivilligt för dig. Du kan...

Hur man gör en Arduino baserat natten ljus med IR-fjärrkontroll!

Här är en Instructable som visar dig hur man bygger en Arduino baserade natten ljus meden liten infraröd fjärrkontroll kan du bläddra igenom 10 pre set färger, och en random blekningfärg rutin som loopar för evigt.Detta instructable antar du:Har en A...

DIY Arduino baserat PHOTO BOOTH

Vi har byggt denna första version av våra Photobooth för bröllopet av vänner, orsak märkte vi att det skulle kosta nästan samma för att hyra en ännu enklare.Vi har försökt göra det så billigt som möjligt för oss, så vi använde våra befintliga DSLR oc...

Jarvis: En Arduino baserat Home automationssystem

Jag inspirerades av Jarvis från Iron Man och ville ha starkt ett hem automationssystem. De befintliga systemen var inte billiga så jag bestämde mig att bygga min egen hemautomation system genom att använda en Arduino. I dagsläget dess funktionalitet...

Lögndetektor och Biofeedback Arduino baserat

Denna handledning kommer att förklara hur man bygger en maskin för biofeedback. Men först lite teori.Vad är biofeedback?[Font: Wikipedia | https://en.wikipedia.org/wiki/Biofeedback]Biofeedback är en process för att få större medvetenhet om många fysi...

Mini CNC Plotter - Arduino baserat

I detta projekt kommer jag visa dig hur man enkelt bygga din egen billiga Arduino Mini CNC Plotter!För X- och Y-axeln vi kommer att använda stepper motors och räcken från två dvd/CD-skivor! Tryckområdet blir max 4x4cm.Eftersom det fungerar med seriel...

Arduino baserat Meter - en många LED Driver

som ett direkt resultat av en fråga i forumet Instructables, för en bargraph att visa data på instrumentbrädan i en bil, en anpassad elektronik instructable.Här, för din uppbyggelse är bil-barDuino, visar ett enkelt system för analoga och digitala gr...

3D tryckt spruta Pump Arduino baserat

Vänligen rösta för mitt projekt att se mer DIY elektromekaniska system!Jag hade en idé att det skulle vara möjligt att göra en hög kvalitet, precision sprutpumpen med 3D tryckta delar och olika extrafunktioner bort av eBay för mycket billigare än vad...

Adil Controller, Arduino baserat trådlös handkontroll

ett nytt projekt av multipurpose fjärrkontrollen. Det kommer att användas för att styra olika robot modeller inklusive en skräddarsydd quadcopter. Den är baserad på ArduinoMega2560 mikrokontroller. Sida till sida med en 1200m intervall RF modul för l...