/*===============================COMPTE TOUR POUR MOTEUR ELECTRIQUE======================== Ce programme calcule la vitesse d'un moteur CC en nombre de tours par minute. Ce programme utilise un optocoupleur en fourche et une interruption externe. Le résultat est affiché dans la fenêtre Terminal du logiciel Arduino. ==========================================================================================*/ volatile long comptageImpuls=0; // variable accessible dans la routine interruption externe 0 long timeRef=0; // variable pour temps de référence en millisecondes long delai=1000; // variable pour délai de comptage en millisecondes void setup() { Serial.begin(115200); // initialise connexion série à 115200 bauds // IMPORTANT : régler le terminal côté PC avec la même valeur de transmission attachInterrupt(0, gestionINT0, RISING); // attache l'interruption externe n°0 à la fonction gestionINT0 // mode déclenchement possibles = LOW, CHANGE, RISING, FALLING timeRef=millis(); // initialisation de la référence du comptage } void loop() { if (millis()>(timeRef+delai)) // si le delai de comptage est écoulé { timeRef=timeRef+delai; // réinitialise le délai de comptage Serial.print("Nombre Impulsions par seconde ="), Serial.println(comptageImpuls); // affiche impulsions/sec Serial.print("Nombre tour par minute ="), Serial.println(comptageImpuls*60); // affiche nombre tours/sec comptageImpuls=0; // RAZ comptage impultions } } // fonction de gestion l'interruption externe n°0 (brancher sortie opto sur broche 2 UNO) // cette fonction est appelée chaque fois que l'interruption a lieu selon le mode configuré (LOW, CHANGE, RISING, FALLING) void gestionINT0() { // la fonction appelée par l'interruption externe n°0 comptageImpuls=comptageImpuls+1; // incrémente comptage Impulsion }