volatile int comptageImpulsion = 0; // variable accessible dans la routine interruption externe 0 int vitesse = 40; int distance = 355; void setup() { Serial.begin(115200); // initialise connexion série à 115200 bauds attachInterrupt(0, gestionINT0, RISING); // attache l'interruption externe n°0 ( = PIN2) à la fonction gestionINT0() pinMode(3, OUTPUT); //Cmd PWM moteur pinMode(4, OUTPUT); //Cmd moteur pinMode(5, OUTPUT); //Cmd moteur Serial.print("Vitesse = "); Serial.println(vitesse); comptageImpulsion = 0; analogWrite(3, vitesse); digitalWrite(4,0); digitalWrite(5,1); } void loop() { Serial.print("Nombre impulsions = "); Serial.println(comptageImpulsion); delay(200); } void gestionINT0() {// la fonction appelée par l'interruption externe n°0 comptageImpulsion++; if (comptageImpulsion >= distance) { digitalWrite(5,1); digitalWrite(4,1); delay(10); digitalWrite(5,0); digitalWrite(4,0); Serial.println("Arrêt"); } }