Salut,
On peut faire ça par interruption.
Par exemple, dans le setup() :
attachInterrupt(digitalPinToInterrupt(pinAnemometer), isr_tours, RISING);
pinAnemometer = 2 ou 3 sur Arduino Uno
à chaque front montant (RISING), le programme saute dans la fonction isr_tours().
Dans la loop() :
1 2 3 4 5 6 7 8 9
| void loop(){
nb_tours = 0;
interrupts(); // autoriser les interruptions
delay(5000); // on compte le nombre de tours sur 5 s par exemple
noInterrupts();// désactiver les interruptions
Serial.println(nb_tours / 5 * 2.4); // vitesse en km/h
} |
fonction d'interruption :
1 2 3
| void isr_tours() {
nb_tours++;
} |
Voilà, en gros dans un premier temps...
Dans le comptage des fronts, il faudra sans doute prendre en compte les rebonds des contacts. A voir quand vous ferez vos premiers tests...
Partager