Skip to content

Instantly share code, notes, and snippets.

@ypelletier
Last active February 22, 2022 15:29
Show Gist options
  • Save ypelletier/84fef06e06d631251c902b879761a24a to your computer and use it in GitHub Desktop.
Save ypelletier/84fef06e06d631251c902b879761a24a to your computer and use it in GitHub Desktop.
Anémomètre (interrupteur reed)
/**************************************************
* Anémomètre
*
* Un interrupteur Reed est branché à la pin 8
* Un aimant passe au-dessus de l'interrupteur reed
* à chaque tour de l'anémomètre
*
* http://electroniqueamateur.blogspot.com/2016/06/fabrication-dun-anemometre-arduino.html
***************************************************/
unsigned long tempsDebut; // passage précédent de l'aimant
int etatPrecedent; // lors de du dernier passage dans le loop,
// l'aimant était là, ou pas?
void setup() {
pinMode(8, INPUT); // interrupteur Reed à la pin 8
pinMode(13,OUTPUT); // LED indicatrice à la pin 13
Serial.begin(9600); // moniteur série
etatPrecedent = digitalRead(8); // on vérifie si l'aimant est là ou pas
}
void loop() {
int etat, delai;
unsigned long tempsFin;
etat = digitalRead(8); // on vérifie si l'aimant est là ou pas
digitalWrite(13,etat);
if ((etat) && (!etatPrecedent)){ // l'aimant vient d'arriver
if (tempsDebut > 0){ // nous connaissons le moment du début de ce tour
tempsFin = millis(); // quelle heure est-il?
delai = tempsFin - tempsDebut; // durée du tour qui vient de se terminer
Serial.print("Periode :" );
Serial.print(delai);
Serial.print(" millisecondes, Vitesse :");
Serial.print(3.6*2*3.1416*0.15*1000/delai);
// (cette vitesse ne tient pas compte de la fonction d'étalonnage)
Serial.println(" km/h");
}
tempsDebut = tempsFin; // mise à jour de la variable
}
etatPrecedent = etat; // mise à jour de la variable
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment