[Résolu]Aide pour faire clignoter une led avec les librairies de bricoleau

Bonjour,

Je me triture les méninges avec un problème qui doit être pourtant simple a résoudre mais moi j'y arrive pas

mon programme de base fonctionne très bien donc la pas de souci, et ça,

grâce aux librairies simplebouton et simpleled de Bricoleau que je remercie grandement

Pour simplifier j'ai un bouton avec double action: simple clic ou double clic

j'aimerais au double clic faire clignoter une led SANS delay et c'est la que je coince

j'ai bien essayé avec la librairie simpleMinuteur en inserant ce bout de code (donné par bricoleau sur son post)

simpleMinuteur tempo(500)

if (tempo) led.basculer();

mais ça clignote pas

J'ai essayer de mettre compteur.démarrer() suivi de ma commande mais la ça clignote en permanence.

voici un bout de mon (simple) code

void simpleClic() {          un appui met la sortie a 1 un autre appuis met a 0
 if (Led_F1.estEteinte())
  {
    Led_F1.allumer();  // allume la led du bp
    

} 
  else   // si Led_F1.estAllumee
   {
     Led_F1.eteindre

   
 }
}
void doubleClic (){
 
if (tempo) led.basculer(); // marche pas ! (dois être dans le loop ?)

  
}

Si quelqu'un pouvais m'aider ça m'arrangerais

En vous remerciant

Hello

Je ne suis pas sûr de comprendre ce que tu veux faire.
Essaye d'être plus explicite, et de mettre ton code en entier.

En essayant de compléter les trous, je suppose que :

Par défaut la led est éteinte.
Après un double clic, elle se met à clignoter.
Après un simple clic, elle revient à l'état éteint.

Ce qui pourrait donner le code ci-dessous (pas testé) :

#include "simpleBouton.h"
#include "simpleLed.h"
#include "simpleMinuteur.h"

boutonAction   bouton(3); //cablage pin---BP---GND
simpleLed      led(13);
simpleMinuteur tempo(500);

bool clignoter = false;

void doubleClic()
{
  clignoter = true;
}

void simpleClic()
{
  led.eteindre();
  clignoter = false;
}

void setup()
{
  bouton.attacher(simpleClic, doubleClic);
}

void loop()
{
  bouton.actualiser();
  if (clignoter && tempo)
  {
    led.basculer();
  }
}

Le clic ou le double clic sont des événements ponctuels.
Il y a besoin de créer une variable globale "bool clignoter", pour mémoriser le mode de fonctionnement de la led (éteinte ou clignotante), puis utiliser les événements pour mettre à jour la variable globale.

Merci Bricoleau ça fonctionne parfaitement, tu a très bien compris ce que je voulais faire, même s'il est vrais que je me suis pas expliqué de la meilleur manière

J'avais pas pensé a crée une variable bool, c’était le point qui me manquais

Pour le code c'est le même que tu a donné, sauf que le mien a 6 boutons avec leur led et 6 sorties
mon programme est en phase de création et je le modifie sans cesse, pour le moment seul le bouton 6 a sa fonction définitive .

Je le met quand même pour le plaisir

//programme du module 6 boutons 2eme variante bouton full multi_clic

#include "simpleBouton.h"
#include "simpleLed.h"
#include "simpleMinuteur.h"

simpleMinuteur tempo(250);
simpleMinuteur tempo1(2000);

bool clignoter = false;

const uint8_t pin_Bp_F1 = A0;//cablage pin---BP---GND
const uint8_t pin_Bp_F2 = A1;
const uint8_t pin_Bp_F3 = A2;
const uint8_t pin_Bp_F4 = A3;
const uint8_t pin_Bp_F5 = A4;
const uint8_t pin_Bp_F6 = A5;


simpleLed Led_F1 = (12);
simpleLed Led_F2 = (11);
simpleLed Led_F3 = (10);
simpleLed Led_F4 = (9);
simpleLed Led_F5 = (8);
simpleLed Led_F6 = (7);

simpleLed GPS = (6);
simpleLed Tr1 = (5);
simpleLed Tr2 = (4);
simpleLed Tr3 = (3);

simpleLed Mosf_1 = (13);
simpleLed Mosf_2 = (2);



boutonAction Bp_F1(pin_Bp_F1);
boutonAction Bp_F2(pin_Bp_F2);
boutonAction Bp_F3(pin_Bp_F3);
boutonAction Bp_F4(pin_Bp_F4);
boutonAction Bp_F5(pin_Bp_F5);
boutonAction Bp_F6(pin_Bp_F6);


// ******Action bouton 1 *********** en test clignotement led 

void simpleClic1() {
  if (Led_F1.estEteinte())
  {
    Led_F1.allumer();
    clignoter = false;
  }
  else
  {
    Led_F1.eteindre();
  }


}
void doubleClic1()
{
  clignoter = true;
}

//== == == == == == == == == == == == == == == == == ==


// ******Action bouton 2 ***********

void simpleClic2() {
  if (Led_F2.estEteinte())
  {
    Led_F2.allumer();

  }
  else
  {
    Led_F2.eteindre();

  }

}
void doubleClic2() {


}

//== == == == == == == == == == == == == == == == == ==


// ******Action bouton 3 ***********

void simpleClic3() {

}
void doubleClic3() {


}

//== == == == == == == == == == == == == == == == == ==


// ******Action bouton 4 ***********

void simpleClic4() {

}
void doubleClic4() {


}

//== == == == == == == == == == == == == == == == == ==


// ******Action bouton 5 ***********

void simpleClic5() {

}
void doubleClic5() {


}

//== == == == == == == == == == == == == == == == == ==



// ******Action bouton 6 ***********


void simpleClic6() {
  if (Led_F6.estEteinte())
  {
    Led_F6.allumer();
    GPS.allumer();
    delay(1500);
    GPS.eteindre();
  }
  else            // if(Led_F6.estAllumee())
  {
    GPS.allumer();
    delay(150);
    GPS.eteindre();
  }
}
void doubleClic6 () {
  Led_F6.eteindre();
  GPS.allumer();
  delay(1500);
  GPS.eteindre();

}
//== == == == == == == == == == == == == == == == == == == == ==



void setup()
{
  Bp_F1.attacher(simpleClic1, doubleClic1); //,tripleClic );
  Bp_F2.attacher(simpleClic2, doubleClic2); //,tripleClic );
  Bp_F3.attacher(simpleClic3, doubleClic3); //,tripleClic );
  Bp_F4.attacher(simpleClic4, doubleClic4); //,tripleClic );
  Bp_F5.attacher(simpleClic5, doubleClic5); //,tripleClic );
  Bp_F6.attacher(simpleClic6, doubleClic6); //,tripleClic );
}

void loop()
{


  Bp_F1.actualiser();
  Bp_F2.actualiser();
  Bp_F3.actualiser();
  Bp_F4.actualiser();
  Bp_F5.actualiser();
  Bp_F6.actualiser();


 if (clignoter && tempo)
  {
    Mosf_1.basculer();
  }
 

// *********utilisation en mode simplebouton ************

  /*if (Bp_F1.vientDEtreEnfonce())
    {
      Led_F1.basculer();
      Mosf_1.basculer();
    }


    if (Bp_F5.vientDEtreEnfonce())
    {
    Led_F5.basculer();
    Mosf_2.basculer();
    }

    if (Bp_F3.vientDEtreEnfonce())
    {
    Led_F1.eteindre();
    Led_F5.eteindre();
    Led_F6.eteindre();
    Mosf_1.eteindre();
    Mosf_2.eteindre();

    }

  */

  //*********fonctionne comme simple poussoir*****************************

  //Led_F1.commander(digitalRead(pin_Bp_F1) == LOW); //fonctionne comme simple poussoir avec simpleBouton
  //Led_F2.commander(digitalRead(pin_Bp_F2) == LOW);
  //Led_F3.commander(digitalRead(pin_Bp_F3) == LOW);
  //Led_F4.commander(digitalRead(pin_Bp_F4) == LOW);
  //Led_F5.commander(digitalRead(pin_Bp_F5) == LOW);
  //Led_F6.commander(digitalRead(pin_Bp_F6) == LOW);
  //Tr1.commander(digitalRead(pin_Bp_F2) == LOW);
  //Tr2.commander(digitalRead(pin_Bp_F3) == LOW);

  //  =============================================================


}

Merci,