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 ![]()
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 ![]()