Bonsoir nythix
Non seulement il est cohérent, hormis les remarques de @vileroi, mais il fonctionne très bien ![]()
Petit bémol: delay (2000) ; une temporisation avec millis() est un poil plus compliquée mais plus "élégante" et, surtout, elle n'est pas bloquante.
Regardes l'exemple BlinkWithoutDelay.ino
J'ai "converti" ton programme:
const int broche_debit = 2;
volatile int compteur = 0;
unsigned long displayTempo = 2000UL; // Rythme d'affichage
unsigned long displayMillis = millis(); // Chrono d'affichage
void ISRImpulsions(){
compteur++;
}
void setup() {
Serial.begin (9600);
pinMode (broche_debit, INPUT_PULLUP); // Utilise la résistance de 1'Arduino
attachInterrupt(digitalPinToInterrupt (broche_debit), ISRImpulsions, RISING); // passe de LOW a HIGH = RISING
}
void loop(){
// 1 litre correspond a 1 Impulsion
if (millis()-displayMillis >= displayTempo) // Si periode d'affichage
{
float litres = compteur;
// Remettre le compteur a zéro
compteur = 0;
// Calcul du débit en L/min
float debit = litres/60;
Serial.print ("Debit : ");
Serial.print (debit);
Serial.println(" L/min");
displayMillis = millis();
}
}
Cordialement
jpbbricole