Compte tour laser (compte tour, compteur de passage ect...)

Bonsoir, effectivement ça résout le problème en partie, parce que de temps à autre le programme reste bloquer sur le blinkage de la led :cold_sweat:

Autrement, pourriez-vous m'aidez a comprendre ça (J'ai commenter directement le code) :

volatile byte half_revolutions; // Pourquoi volatile byte ?
unsigned int rpm; 
unsigned long timeold;

void setup()
 {
   Serial.begin(9600); // Communication serie
   attachInterrupt(0, rpm_fun, RISING); // interruption
   half_revolutions = 0;             // 
   rpm = 0;                          // Déclarer toutes les valeurs a 0 ??
   timeold = 0;                    //
 }
 void loop()
 {
   if (half_revolutions >= 20) // 
{   //
     //Update RPM every 20 counts, increase this for better RPM resolution,
     //decrease for faster update
     rpm = 30*1000/(millis() - timeold)*half_revolutions;     // Je ne comprend pas cette ligne
     timeold = millis();     // Ni elle du coup
     half_revolutions = 0;     // Valeur mise a jour par l'interruption ?
     Serial.println(rpm,DEC);
   }
 }
 void rpm_fun()
 {
   half_revolutions++; 
   //Each rotation, this interrupt function is run twice // Pourquoi half_revolutions ?
 }

Merci a vous :slight_smile: