Bonjour,
je débute avec Arduino et je souhaiterais faire varier l'intensité de la LED en fonction de la vitesse du vent mesuré par un anémomètre (ensemble Anémomètre + Girouette sur LExtronic).
J'ai récupéré un code sur le site Électronique en amateur: Fabrication d'un anémomètre (Arduino).
L'anémomètre est relié la pin A2 de la carte Arduino, et la LED reliée à la pin 7.
Il y a 2 questions :
- comment faire pour que la LED ne s'éteigne pas à chaque tour mais uniquement lorsque l'anémomètre est à l'arrêt ?
- Les valeurs en KM/h sont bien lisibles. Je voudrais les utiliser pour les faire correspondre au niveau d'éclairement de la LED (exemple 10km/h=10%, 50Km/h=50%, ...). Quelle fonction dois-je ajouter pour y arriver ?
Un grand merci d'avance (surtout pour votre patience) !
Voici le code utilisé pour l'instant :
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(A2, INPUT); // interrupteur Reed à la pin 8
pinMode(7,OUTPUT); // LED indicatrice à la pin 13
Serial.begin(9600); // moniteur série
etatPrecedent = digitalRead(A2); // on vérifie si l'aimant est là ou pas
}
void loop() {
int etat, delai;
unsigned long tempsFin;
etat = digitalRead(A2); // on vérifie si l'aimant est là ou pas
digitalWrite(7,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
}