Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int VITESSE_MOTEUR = 3 ; // la broche 3 régule la vitesse moteur A
- const int AVANCE_MOTEUR = 4; // moteur commandé sur la broche 4
- const int DELAY_CAPTEUR = 2000 ;
- int inputPin_1 = 2 ; // entrée pour IR1 (capteur bouteille)
- int pirState_1 = LOW ; // capteur bouteille démarre a 0
- int val_1 = 0 ; // Variable de lecture capteur bouteille
- int inputPin_2 = 12 ; // entrée pour Capteur etiquette
- int pirState_2 = LOW ; // Capteur etiquette démarre a 0
- int val_2 = 0 ; // Variable lecture capteur etiquette
- unsigned long previousMillis = 0;
- unsigned long currentMillis = 0;
- void setup() {
- Serial.begin(9600);
- pinMode (VITESSE_MOTEUR , OUTPUT) ; // défini le PWM comme sortie
- pinMode (AVANCE_MOTEUR , OUTPUT) ; // défini le moteur avant sortie
- pinMode (inputPin_1 , INPUT) ; // défini le capteur bouteille en entrée
- digitalWrite (VITESSE_MOTEUR , LOW) ; // Vitesse basse
- digitalWrite (AVANCE_MOTEUR , LOW) ; // Moteur a l'arret
- pinMode (inputPin_2 , INPUT) ; // défini le capteur etiquette a sortie
- }
- void loop() {
- val_1 = digitalRead(inputPin_1) ; // lecture de la valeur capteur bouteille
- val_2 = digitalRead(inputPin_2) ; // lecture de la valeur capteur etiquette
- Serial.println("départ");
- if (val_1 == LOW) { // Questionner si bouteille présente
- Serial.println("bouteille") ;
- // delay(2000) empeche le capteur etiquette de voir et donc n'arrete pas le moteur.
- // Si pas de delay, fonctionnement ok, mais pas le temps de bien positionner la bouteille
- //et donc bouteille pas correctement place pour etiquetter
- //pour remplacer delay sans bloquer le programme
- currentMillis = millis();
- if ( (currentMillis - previousMillis ) <= DELAY_CAPTEUR ){
- //on ne fait rien on est en pseudo delai dans le if
- }
- else{
- previousMillis = currentMillis;
- digitalWrite(AVANCE_MOTEUR , HIGH) ; // moteur tourne sens avance
- analogWrite(VITESSE_MOTEUR , 150) ; // vitesse réduite par 60 au lieu de 255
- while(val_2 == HIGH) { // jusqu'a ce que ne voit plus etiquette
- while(!val_1 == HIGH){ // tant que bouteille présente
- val_1 = digitalRead(inputPin_1);
- val_2 = digitalRead(inputPin_2) ;
- digitalWrite(AVANCE_MOTEUR , LOW) ; // moteur a l'arret
- analogWrite(VITESSE_MOTEUR , 0) ;
- Serial.println("etiquette collée") ;
- } // while!
- } // while
- }
- // Si bouteille plus présente et etiquette pas présente, "etiquette collée" (le loop ne reviens pas au départ)
- } // if
- else {
- Serial.println (" manque bouteille" ) ;
- digitalWrite(AVANCE_MOTEUR , LOW) ; // moteur a l'arret
- analogWrite(VITESSE_MOTEUR , 0) ;
- } //else
- } //loop
Add Comment
Please, Sign In to add comment