La machine à cocktail
Sommaire
Description du projet
Le but était de réaliser différents cocktails avec une seule et même machine. En remplissant les quatre bouteilles, on choisit le cocktail à faire à l'aide du potentiomètre et le mélange atterri dans votre verre !
Liste du matériel
• 4 bouteilles • 4 servomoteurs • 1 potentiomètre • 1 LED RGB • 4 ballons • Moulte bois • Mousse • 1 Arduino
Support bouteille
Pour maintenir les bouteilles, nous avons fait deux gros supports pouvant accueillir deux bouteilles chacun. Le bois ainsi que la bouteille sont tenus avec de la colle.
Nous avons ensuite fixé un ballon à la bouteille pour limité le flux de liquide. Un élastique régule lui aussi les flux.
A l'aide du servomoteur, le ballon est coincé pour "fermer" la bouteille. Ainsi, suivant la position du potentiomètre, les dosages (temps d'ouverture) et les liquides (ouverture ou non) changent. La led nous indique le liquide choisit et clignote lorsque le cocktail est en préparation.
Schéma de cablage
Modifications possibles
Notre machine à cocktail ne fonctionnait pas totalement. En effet, elle était opérationnelle avec uniquement deux liquides, en raison de des servomoteurs trop gourmands en énergies (l'Arduino ne délivrait pas assez de puissance pour que les quatre servomoteurs puissent bloquer les liquides avec suffisamment de force). On pourrait aussi ajouter un écran pour que le choix soit plus simple, ou encore pouvoir commander la machine à distance via une application mobile ou un site internet.
Code
- include <Servo.h>
Servo m1; Servo m2; Servo m3; Servo m4; const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int bp1 = 1; const int P1 = 0; long t0 = millis(); int mode = 1; int b=255; int c;
void setup() {
// Start off with the LED off. Serial.begin(9600); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); setColourRgb(0,0,0); m1.attach(2); m2.attach(3); m3.attach(4); m4.attach(5); m1.write(130); m2.write(130); m3.write(130); m4.write(130);
}
void loop() {
unsigned int rgbColour[3];
int x = analogRead(P1);
if(x<100){c=1;} else if(x<200){c=2;} else if(x<300){c=3;} else if(x<400){c=4;} else if(x<500){c=5;} else if(x<600){c=6;} else{c=7;}
if(c==1){setColourRgb(0,255,255);} else if(c==2){setColourRgb(0,0,255);} else if(c==3){setColourRgb(255,0,255);} else if(c==4){setColourRgb(255,0,0);} else if(c==5){setColourRgb(255,255,0);} else if(c==6){setColourRgb(0,255,0);} else if(c==7){setColourRgb(0,0,0);}
if(analogRead(bp1)>300){
if(c==1){ m1.write(0); long t=millis(); while(millis()-t<3000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m1.write(130); } if(c==2){
m2.write(0); long t=millis(); while(millis()-t<3000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m2.write(130);
}
if(c==3){ m2.write(0); delay(500); m3.write(0); long t=millis(); while(millis()-t<3000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m2.write(130); delay(500); m3.write(130);
}
if(c==4){ m2.write(0); delay(200); m3.write(0); delay(200); m4.write(0); delay(200); m2.write(130); long t=millis(); while(millis()-t<3000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m3.write(130); delay(500); m4.write(130);
}
if(c==5){ m3.write(0); long t=millis(); while(millis()-t<3000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m3.write(130);
}
if(c==6){ m1.write(0); delay(500); m3.write(0); long t=millis(); while(millis()-t<3000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m1.write(130); m3.write(130);
}
if(c==7){ m1.write(0); delay(250); m2.write(0); delay(250); m3.write(0); delay(250); m4.write(0); long t=millis(); while(millis()-t<2000){setColourRgb(255,255,255); delay(50); setColourRgb(0,0,0); delay(50);} m1.write(130); delay(250); m2.write(130); delay(250); m3.write(130); delay(250); m4.write(130);
} }
}
void setColourRgb(unsigned int red, unsigned int green, unsigned int blue) {
analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); }