Boucle conditionnelle avec un bouton

Bonjour à tous,

Je bug sur un projet, je désire faire une guirlande et lorsque je clique sur le bouton je change le mode de clignotement. Les modes pas de soucis j'ai fait ce qu'il fallait, par contre je n'arrive pas à changer de mode avec un bouton.

Je voudrais que chaque fois que j'appuie sur le bouton ça change de mode.

Quelqu'un à une idée?

Voici ce que j'ai commencé je fais un code pour 3 leds mais le principe sera le même.

const int Pushbutton = 7;
const int LED1 = 10;
const int LED2 = 9;
const int LED3 = 8;

int value = 0;

void setup() {
 pinMode (LED1, OUTPUT);
 pinMode (LED2, OUTPUT);
 pinMode (LED3, OUTPUT);
 pinMode (Pushbutton, INPUT_PULLUP);
}

void loop() {
value = digitalRead(Pushbutton);
if (value == LOW)
    {
       delay(10); //10 milliseconds anti-rebond
       if (value == LOW)
    {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        delay(1000);
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
           }
    }
}

bonjour,
tu mets un compteur simplement.

si bouton appuyé => compteur + 1
si compteur > x => compteur = 0 et tu reboucle
après un switch case
switch (bouton)
case 1 :
illumation 1
case 2:
illumation 2
etc....

Merci infobarquee,

Etant nouveau en Arduino et en programmation, aurais-tu le temps de montrer un bout de code pour m'aiguiller?

Merci d'avance

Darkoscreation:
Merci infobarquee,

Etant nouveau en Arduino et en programmation, aurais-tu le temps de montrer un bout de code pour m'aiguiller?

Merci d'avance

une petite recherche de ta part serait la bienvenue

Juste :wink:

Merci

J'ai essayé avec une boucle if, une boucle for, à mon avis je m'exprime mal, car mes led restent tout le temps allumées maintenant.

J'ai regardé comme tu me l'as conseillé mais malgré tout ce que j'ai trouvé ça ne fonctionne pas.

const int Bouton = 7;
const int LED1 = 10;
const int LED2 = 9;
const int LED3 = 8;

int compteur = 0;

void setup() {
 pinMode (LED1, OUTPUT);
 pinMode (LED2, OUTPUT);
 pinMode (LED3, OUTPUT);
 pinMode (Bouton, INPUT_PULLUP);
 
}

void loop() {
compteur = digitalRead(Bouton);
if (compteur == LOW)
{
  delay(10);
  if (compteur == LOW)
  {
    compteur++;
  }
  }
if (compteur >3)
{
  compteur = 0;
}
switch (compteur)
{
  case 1:       
        //mode1
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        delay(1000);
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
  break;
  case 2:
        //mode2
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        delay(200);
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
        delay(200);
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        delay(200);
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
        delay(200);
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        delay(200);
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
        delay(200);
   break;
  case 3:
        //mode3
        digitalWrite(LED1, HIGH);
        delay(200);
        digitalWrite(LED1, LOW);
        delay(200);
        digitalWrite(LED2, HIGH);
        delay(200);
        digitalWrite(LED2, LOW);
        delay(200);
        digitalWrite(LED3, HIGH);
        delay(200);
        digitalWrite(LED3, LOW);
        delay(200);
    }
    }

Bonjour,

Tu utilises la même variable pour la lecture de l'entrée et pour le compteur. Ce doit être bien sur deux variables différentes.

void loop() {

if (digitalRead(Bouton) == LOW)
{
  delay(10);
  compteur++;
 
}
if (compteur >3)
{
  compteur = 0;
}
reste du code

Merci beaucoup ça fonctionne à merveille :wink: