Faire allumer une LED avec un bouton poussoir pendant un certain temps

Bonjour,
Depuis quelques jours je cherche comment faire pour que quand j'appuie sur un bouton poussoir 2 broche ma Led s'allume pendant part exemple 10 sec puis s'étaient je c'est que ça peux paraître facile.
Merci d'avance pour votre réponse.

Bienvenue,

Tu peux faire quelque chose comme ça

void loop()
{
  static uint32_t _millis = 0;
  
  if ( appuiBouton )
  {
    _millis = millis();
    allumerLed();
  }
  
  if ( _millis != 0 && millis() - _millis >= 10000 )
  {
    _millis = 0;
    eteindreLed();
  }
}

Bonjour,

L'utilisation de millis() (qui est un compteur de temps depuis lancement de ta carte) est peut-être un peu overkill. Un delay() suffit amplement.

Ça donnera quelque choses comme ça :

void loop(){
  if (appuiBouton) {
    allumerLed();
    delay(10000); //c'est en miliseconde donc pour 10 seconde, 10000 miliseconde
    eteindreLed();
  }
}
1 Like

merci beaucoup grâce a toi j'ai réussi ce que je voulais faire

Bonjour,
Je préfère largement la solution millis(), ça apprend à faire du code non bloquant.
Une bonne habitude à avoir pour les codes à venir.

Bonjour

Je plussoie @EGT59 , la version avec millis est meilleur. Avec delay, c'est plus simple et ça fonctionne tout de suite, mais, il faut savoir que pendant les 10 secondes (delay(10000)) de l'allumage, ton programme ne fait rien d'autre que d'attendre la fin des 10 secondes, delay est une fonction dite bloquante.
Supposons que tu veuilles au moyen du même bouton ou un autre, éteindre la LED, ça n'est pas possible, le programme, pendant le delay, ne peut pas lire le ou les boutons.

Cordialement
jpbbricole

Si vous voulez un peu plus de flexibilité future, c'est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.