Vitesse du vent et % LED

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
}

Hi damien,

if you would like to write in french please post in the french forum. I send a message to the moderator to MOVE your question to the french sub-forum
best regards Stefan

You're right. Sorry for that and thanks for your answer!

bonsoir,

je n'ai pas lu le code (trop fainéant pour ça) mais si tu dis savoir lire la vitesse et la quantifier, tu devrais te documenter sur la gestion de la MLI (en anglais : PWM) qui te permettra de gérer la luminosité de ta DEL (toujours en anglais : LED)

une piste : cherche "AnalogWrite" dans la rubrique "Resources/Reference"

OK merci pour ta réponse, je vais aller regarder de ce coté là.