granteeric

modification code etiquette

Mar 26th, 2021 (edited)
271
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. const int DELAY_CAPTEUR = 2000 ;
  4. int inputPin_1 = 2 ; // entrée pour IR1 (capteur bouteille)
  5. int pirState_1 = LOW ; // capteur bouteille démarre a 0
  6. int val_1 = 0 ; // Variable de lecture capteur bouteille
  7. int inputPin_2 = 12 ; // entrée pour Capteur etiquette
  8. int pirState_2 = LOW ; // Capteur etiquette démarre a 0
  9. int val_2 = 0 ; // Variable lecture capteur etiquette
  10.  
  11. unsigned long previousMillis = 0;
  12. unsigned long currentMillis = 0;
  13.  
  14. void setup() {
  15. Serial.begin(9600);
  16.   pinMode (VITESSE_MOTEUR , OUTPUT) ; // défini le PWM comme sortie
  17.   pinMode (AVANCE_MOTEUR , OUTPUT) ; // défini le moteur avant sortie
  18.   pinMode (inputPin_1 , INPUT) ; // défini le capteur bouteille en entrée
  19.   digitalWrite (VITESSE_MOTEUR , LOW) ; // Vitesse basse
  20.   digitalWrite (AVANCE_MOTEUR , LOW) ; // Moteur a l'arret
  21.   pinMode (inputPin_2 , INPUT) ; // défini le capteur etiquette a sortie
  22. }
  23.  
  24. void loop() {
  25.   val_1 = digitalRead(inputPin_1) ; // lecture de la valeur capteur bouteille
  26.   val_2 = digitalRead(inputPin_2) ; // lecture de la valeur capteur etiquette
  27.   Serial.println("départ");
  28.  
  29.   if (val_1 == LOW) { // Questionner si bouteille présente
  30.     Serial.println("bouteille") ;
  31.     // delay(2000) empeche le capteur etiquette de voir et donc n'arrete pas le moteur.
  32.     // Si pas de delay, fonctionnement ok, mais pas le temps de bien positionner la bouteille
  33.     //et donc bouteille pas correctement place pour etiquetter
  34.    
  35.     //pour remplacer delay sans bloquer le programme
  36.     currentMillis = millis();
  37.     if ( (currentMillis - previousMillis ) <= DELAY_CAPTEUR ){
  38.       //on ne fait rien on est en pseudo delai dans le if
  39.     }
  40.     else{
  41.      previousMillis = currentMillis;
  42.      digitalWrite(AVANCE_MOTEUR , HIGH) ; // moteur tourne sens avance
  43.      analogWrite(VITESSE_MOTEUR , 150) ; // vitesse réduite par 60 au lieu de 255
  44.      
  45.      
  46.      while(val_2 == HIGH) { // jusqu'a ce que ne voit plus etiquette
  47.      
  48.       while(!val_1 == HIGH){ // tant que bouteille présente
  49.           val_1 = digitalRead(inputPin_1);
  50.           val_2 = digitalRead(inputPin_2) ;
  51.           digitalWrite(AVANCE_MOTEUR , LOW) ; // moteur a l'arret
  52.           analogWrite(VITESSE_MOTEUR , 0) ;
  53.           Serial.println("etiquette collée") ;
  54.           } // while!
  55.       } // while
  56.     }
  57.     // Si bouteille plus présente et etiquette pas présente, "etiquette collée" (le loop ne reviens pas au départ)
  58.   } // if
  59.   else {
  60.     Serial.println (" manque bouteille" ) ;
  61.     digitalWrite(AVANCE_MOTEUR , LOW) ; // moteur a l'arret
  62.     analogWrite(VITESSE_MOTEUR , 0) ;
  63.   } //else
  64. } //loop
Add Comment
Please, Sign In to add comment