Clignotement de Led

Bonjour,

Je souhaite faire clignoter une led en cas de dépassement d'une température.

J'ai placé dans les définitions au début le code suivant :

// Clignotement de la led verte pour dépassement des températures jour ou nuit
   
  static unsigned long prevMillis = 0;
  int etatLedChauffage = 0;
  
 void blinkLedChauffage()
  {
    unsigned long curMillis = millis();
   if(curMillis - prevMillis > 100) 
   {
      prevMillis = curMillis;
      if(etatLedChauffage == 0)
      {   
          digitalWrite (LedChauffage,LOW);
          etatLedChauffage = 1;
      }
      else
      {
          digitalWrite (LedChauffage,HIGH);
          etatLedChauffage = 0;
      }
   }
  }

Dans void loop, j'appelle cette fonction par l'instruction blinkLedChauffage() au sein d'une instruction if mais ça ne fonctionne pas enfin pas comme je voudrais elle clignote mais 16 secondes allumée et 16 secondes éteinte .....

Je n'arrive pas à résoudre mon problème

Quelqu'un a une idée?

Merci par avance

Eric

montrez nous la boucle... il fait quoi ce if ?

Re

Voici la boucle if

if (HProg >= 700 && HProg <=2200)   // Température de jour 25°C
    
    {
    lcd.setCursor(16,2); lcd.print("Jour");
      if (TemperatureEau > 25.1)
      {
        digitalWrite(Chauffage, LOW); digitalWrite(LedAlarmeChauffage, HIGH); blinkLedChauffage(); //digitalWrite(LedChauffage, LOW);
      }
      else
      {
        digitalWrite(Chauffage, HIGH); digitalWrite(LedAlarmeChauffage, LOW); digitalWrite(LedChauffage, HIGH);
      }
    }

    else    // Température de nuit 24°C
    {
    lcd.setCursor(16,2); lcd.print("Nuit");
      if (TemperatureEau > 24.1)
      {
        digitalWrite(Chauffage, LOW); digitalWrite(LedAlarmeChauffage, HIGH); digitalWrite(LedChauffage, LOW);
      }
      else
      {
        digitalWrite(Chauffage, HIGH); digitalWrite(LedAlarmeChauffage, LOW); digitalWrite(LedChauffage, HIGH);
      }
    }

ceci n’est qu’une partie du code, ailleurs j’utilise des “delay” pour afficher des états sur un lcd ou mesurer un niveau d’eau par une moyenne.

Celà peut-il avoir une influence sur mon clignotement de led?

Bonjour,
au fait, n’existe-t-il pas une bibliothèque qui s’occupe de faire clignoter à une vitesses donnée, sans trop ralentir le programme ?

Il faut voir tout ce que fait votre loop, oui

bonjour,
il existe un moyen de faire clignoter une led avec une seule ligne de code ou presque.
sauf si la led sert à quelque chose d’autre.
mettre une led clignotante tout simplement :wink:

bonjour

Je ne peux utiliser une led clignotante sinon je l'aurai fait :slight_smile:

Actuellement cette led est allumée quand le chauffage de l'eau fonctionne et je veux qu'elle clignote au dessus de 25.1° pour indiquer que la résistance de chauffage est coupée. Au dessus de 26° elle s'éteint et c'est une led rouge qui s'allume.

Je vais tester avec la librairie indiquée plus haut mais je vais devoir reprendre toutes mes intructions avec delay car ça a l'air de poser quelques problèmes.

Je vous tiens au courant.

Merci à tous

oui avoir des longs délais c'est un soucis, ça arrête tout le code.

Ce que vous décrivez est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)