Advertisement
mich29800

etiqueteuse

Mar 27th, 2021 (edited)
522
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const int VITESSE_MOTEUR = 3 ; // la broche 3 régule la vitesse moteur A
  2. const int AVANCE_MOTEUR = 4; // moteur commandé sur la broche 4
  3. int inputPin_1 = 2 ; // entrée pour IR1 (capteur bouteille)
  4. int pirState_1 = LOW ; // capteur bouteille démarre a 0
  5. int val_1 = 0 ; // Variable de lecture capteur bouteille
  6. int inputPin_2 = 12 ; // entrée pour Capteur etiquette
  7. int pirState_2 = LOW ; // Capteur etiquette démarre a 0
  8. int val_2 = 0 ; // Variable lecture capteur etiquette
  9. byte etat=0;
  10. unsigned long tempo;
  11. void setup() {
  12. Serial.begin(9600);
  13. pinMode (VITESSE_MOTEUR , OUTPUT) ; // défini le PWM comme sortie
  14. pinMode (AVANCE_MOTEUR , OUTPUT) ; // défini le moteur avant sortie
  15. pinMode (inputPin_1 , INPUT) ; // défini le capteur bouteille en entrée
  16. digitalWrite (VITESSE_MOTEUR , LOW) ; // Vitesse basse
  17. digitalWrite (AVANCE_MOTEUR , LOW) ; // Moteur a l'arret
  18. pinMode (inputPin_2 , INPUT) ; // défini le capteur etiquette a sortie
  19. }
  20. void loop() {
  21.  
  22. switch (etat)
  23. {
  24. case 0:             // attente présence bouteille
  25. {
  26.   if(!digitalRead(inputPin_1))
  27.   {Serial.println("Bouteille présente");etat=1;tempo=millis();}
  28.   break;
  29. }
  30. case 1:            // tempo 2s avant mise en route moteur
  31. {
  32.   if ((millis()-tempo)>2000){etat=2;}
  33.   break;
  34.  }
  35. case 2:           // mise en route moteur et attente entre étiquette
  36. { Serial.println("avance moteur");
  37.   digitalWrite(AVANCE_MOTEUR , HIGH) ;
  38.   analogWrite(VITESSE_MOTEUR , 150) ;
  39.   if(!digitalRead(inputPin_2))
  40.   {Serial.println("étiquette collée");etat=3;}
  41.   break;
  42.  }
  43. case 3:         // arrêt moteur, attente bouteille enlevée,
  44. {
  45.  digitalWrite(AVANCE_MOTEUR , LOW) ; // moteur a l'arret
  46.  analogWrite(VITESSE_MOTEUR , 0) ;
  47.  if(digitalRead(inputPin_1)){tempo=millis();etat=4;}
  48.  break;
  49.  }
  50. case 4:       // tempo de 500ms pour confirmer l'enlèvement de la bouteille
  51. {
  52.  if((digitalRead(inputPin_1))&&(millis()-tempo>500))// on s'assure que la bouteille est absente 500ms
  53.  {Serial.println("attente présence Bouteille");etat=0;}
  54.   break;
  55. }
  56.  
  57.  
  58.  default : {}  
  59. } //case
  60. } //loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement