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();
}
}
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.