Fonction millis(), interrupteur

Bonjour , je voudrais utilisé la fonction millis() afin que lorsque que j'appuie + 3secondes sur mon bouton poussoir celui-ci eteind mes leds. Mais malheuresement je bloque , je ne comprends pas tellement cette fonction

  if(millis() >= etatBouton + 3000)
  {
      colorWippe(strip.Color(0, 0, 0), 15 ); //OFF
      BoutonCounter = 0; // Renitialisation du compteur
      etatBouton = millis();
  }

J'ai fais ça mais je doute que cela soit juste vu que ça ne marche pas ...

J'ai pris une partie du programme si vous avez besoin de l'ensemble , merci de me le faire part
Merci

C’est quoi etatBouton ? Quelle est la cohérence de la formule sur le temps?

Notez que Pour éviter les soucis de rollover, on procède toujours par soustraction plutôt qu’maddition sur le tempsif (millis() - tempsDebut >= durée) {...}

Calculer le temps d’appui, ça veut dire détecter l’appui, détecter le relâchement, calculer le temps entre les 2 et si c’est plus de 3 secondes alors faire votre action (ou éventuellement si pas de relâchement avant 3s et que vous voulez agir sans relâcher le bouton)

On ne voit pas ces détections d’appui et relâche dans ce que vous avez posté, donc on ne peut pas vous dire...

Donc

  • si transition d’appui noter t0
  • si relâche calculer millis()-t0 et décider quoi faire
    (Et/ou si pas relâche comparer millis()-t0 et décider quoi faire)

Il faut une petite machine à états

Et oui d’une manière générale poster tout un code compilable, votre projet ou un extrait qui met en lumière ce que vous testez

Bonsoir, je voudrais utiliser la fonction millis() afin de vouloir faire un interrupteur avec un boutton , que lorsque je reste appuyé 3s ma LED s'éteigne, mais malheuresement étant débutant dans arduino , je n'arrive pas réellement a comprendre comment faire. Et comment commencer la partie loop du programme

Pour éviter de jongler avec la fonction millis() si tu ne sais pas t'en servir, tu peux utiliser la bibliothèque button2 qui permet de gérer les appuis longs. Voir les exemples fournis avec la bibli.

Il vous faut noter le moment où on passe d'une patte à l'etar bas à la même patte à l'etat haut.

donc loop devrait contenir :

static bool pattePrecedent;
static byte etat;

et on note ce moment
if (LOW == pattePrecedent) && (HIGH == patteActuel)) {debut = millis(); etat= 1;}

if (LOW == patteActuel ) etat =0;

avant d'actualiser pattePrecedent :
pattePrecedent = patteActuel;

Maintenant que le bouton est gere, on va s'occuper des temps
if ((1== etat ) && ((millis() -debut) > 3000)) {allumer LED}

Toi, tu vas te retrouver dans le Bakapoubelle à faire des doublons....

ah mince j'avais oublié celui la