La machine à cocktail : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(import code)
Ligne 39 : Ligne 39 :
 
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).  
 
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.  
 
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);
 +
}
  
 
[[Catégorie:Enib2019]]
 
[[Catégorie:Enib2019]]

Version du 23 janvier 2019 à 10:55


Machine.jpg

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.

Débutmachine.jpg

Nous avons ensuite fixé un ballon à la bouteille pour limité le flux de liquide. Un élastique régule lui aussi les flux.


Socle1.jpg

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.

Cablagemachine.jpg

Schéma de cablage

50927154 396634794439544 3292659041649557504 n.png

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

  1. 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);
}