Bonsoir a tous,
Ci apres vous trouverez le code qui me permet de controler un bar a cocktail Via Bluetooth. Shema joint également.
Celui ci fonctionne mais j aurais souhaite, grace a votre aide, en ameliorer le concept.
- Je commande donc un moteur DC qui avance ou recule le chariot -donc le verre- sous les bouteilles
- Ensuite je déclenche (ou non) le servo moteur qui appui sur les bouchons doseurs.
- Et enfin, via les 4 relais, je commande les mini-pompes (pour les boissons gazeuses)
Je voudrais pouvoir ajouter un capteur de distance ultrasons afin que les ordres transmis via Bluetooth ne s exécute que si et seulement si un verre est positionné sur son emplacement de départ (le chariot).
Et pourquoi ne pas y ajouter 2 interrupteurs de fin de course de chaque coté du chariot.
N ayant jamais eu a intégrer de tels capteurs, j aimerais pouvoir bénéficier de vos lumières. un peu d aide serait bienvenue.
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial Bluetooth(10, 11); // RX | TX
Servo servo;
int pompe1 = 3; // les 4 pompes déclenchées par les relais
int pompe2 = 4;
int pompe3 = 5;
int pompe4 = 6;
int state = 0;
int servoPin = 7;
int servoAngle = 0; // Position du servo moteur en degres
int Moteur1_Retour = 8;
int Moteur1_Avance = 9;
void setup() {
Serial.begin(9600);
pinMode(pompe1,OUTPUT);
pinMode(pompe2,OUTPUT);
pinMode(pompe3,OUTPUT);
pinMode(Moteur1_Avance, OUTPUT);
pinMode(Moteur1_Retour, OUTPUT);
servo.attach(servoPin);
}
void loop() {
if(Serial.available() > 0)
{
char data;
data = Serial.read();
Serial.write(Serial.read());
switch (data) // Delai et sens a revoir mais fonctionnel
{
case '1': // Whisky Coca
digitalWrite(Moteur1_Avance, HIGH);
delay(4000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Retour, HIGH);
delay(3000);
digitalWrite(Moteur1_Retour, LOW);
digitalWrite(pompe1, HIGH);
delay(5000);
digitalWrite(pompe1, LOW);
break;
case '2': // Vodka Orange
digitalWrite(Moteur1_Avance, HIGH);
delay(3000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Retour, HIGH);
delay(3000);
digitalWrite(Moteur1_Retour, LOW);
digitalWrite(pompe1, HIGH);
delay(5000);
digitalWrite(pompe1, LOW);
break;
case '3': // Rhum Coca
digitalWrite(Moteur1_Avance, HIGH);
delay(6000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Retour, HIGH);
delay(7000);
digitalWrite(Moteur1_Retour, LOW);
digitalWrite(pompe1, HIGH);
delay(5000);
digitalWrite(pompe1, LOW);
break;
case '4': //Pastis par temps bleu
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
servo.write(45);
delay(2500);
servo.write(165);
delay(500);
digitalWrite(Moteur1_Retour, HIGH);
delay(3000);
digitalWrite(Moteur1_Retour, LOW);
digitalWrite(pompe1, HIGH);
delay(5000);
digitalWrite(pompe1, LOW);
break;
case '5': // Coca Cola
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
delay(500);
digitalWrite(pompe1, HIGH);
delay(5000);
digitalWrite(pompe1, LOW);
break;
case '6': // Jus d'Orange
digitalWrite(Moteur1_Avance, HIGH);
delay(5000);
digitalWrite(Moteur1_Avance, LOW);
delay(500);
digitalWrite(pompe1, HIGH);
delay(5000);
digitalWrite(pompe1, LOW);
break;
default: //Si Bluetooth ne recoit aucune valeur, mets le moteur en OFF
digitalWrite(Moteur1_Avance, LOW);
digitalWrite(Moteur1_Avance, LOW);
digitalWrite(Moteur1_Retour, LOW);
digitalWrite(Moteur1_Retour, LOW);
}
}
}