Erreur de code bandeau led

Bonjour , je cherche a faire simplement un programme qui allume une lampe toute les 0.5 sec pour faire un genre de bandeau.. j'ai donc essayer sa :

const int led1 = 13;
const int led2 = 12;
const int led3 = 11;
const int led4 = 10;
const int led5 = 9;
const int led6 = 8;
const int led7 = 7;
const int led8 = 6;
const int led9 = 5;
const int led10 = 4;
const int led11 = 3;
const int button = 2;

int buttonState = 0;

void setup() {
  
  pinMode(led1, OUTPUT);  //on dit que les leds sont des sorties
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led10, OUTPUT);
  pinMode(led11, OUTPUT);
  
  pinMode(button, INPUT);  // on dit que le bouton est une entrée


}

void loop() {

  buttonState = digitalRead(button);

  if (buttonState == HIGH) {

    digitalWrite(led1, HIGH);             // led 1 allumée , led2 et 3 eteinte
    delay(500);                         // 0.5 sec d'attente
    digitalWrite(led1, LOW);           
    digitalWrite(led2, HIGH);         // led1 et 3 eteinte , led 2 allumée
    delay(500);                     // 0.5 sec d'attente
    digitalWrite(led2, LOW);      // led 1 et 2 eteinte , led 3 allumée
    digitalWrite(led3, HIGH);
    delay(500);                 // 0.5 sec d'attente
    digitalWrite(led3, LOW);
    delay(500);
   
    

  } else {                      // sinon

    digitalWrite(led1 ,LOW);  // TOUTE LES LED SONT ENTEINTE
    digitalWrite(led2 ,LOW);
    digitalWrite(led3 ,LOW);
    digitalWrite(led4 ,LOW);
    digitalWrite(led5 ,LOW);
    digitalWrite(led6 ,LOW);
    digitalWrite(led7 ,LOW);
    digitalWrite(led8 ,LOW);
    digitalWrite(led9 ,LOW);
    digitalWrite(led10 ,LOW);
    digitalWrite(led11 ,LOW);
    
  }


}

et donc enfaite il n'y a que la led1 qui s'allume et s'éteint toute les 0.5 sec , c'est donc une erreur de code ...

C'est pour mon TPE pour le bac j'aurai donc surement encore besoin de vous

bonjour,
revois tes connexions.
résistance ou non sur les leds?
sur la 13 il y a une resistance d'office dans la carte.

hello
ton code semble ok
par contre la remise à zéro dans le else est inutile puisque tu éteinds tes lesd 500ms après les avoir allumées. donc en sortie de loop, toutes tes leds sont éteintes.

comment est cablé ton BP? comme tu utilises le 5 v si "BP_appuyé", tu as une résistance de "push down" à la masse.

perso, je préfère l'inverse. si BP appuyé, le contact est passant à GND. ce qui permet d'utiliser la pullup interne en déclarant: pinMode(button, INPUT_PULLUP);
de cette façon, pas de résistance externe à ajouter.

j'ai refait ton prg, en utilisant cette méthode pour le BP.
comme ma platine est équipée du shield LCD avec ses boutons de direction, select et raz, j'ai déclaré le BP en A0 ( qui est le retour des BP du shield)
comme BP, je peux ainsi utiliser les 4 touches de direction.

regarde l'utilisation des boucles "FOR" et l'appel des la fonction "raz"

sans prétentions, juste pour te mettre le pied à l'étrier :slight_smile:

int led[11];
const int button = A0;
boolean buttonState = 0;

void setup()
{
  Serial.begin(57600);   
  for (int f = 3; f < 14; f++)
  {
    pinMode(led[f], OUTPUT);
  }
  pinMode(button, INPUT_PULLUP);
  Serial.println("raz dans le setup");
  raz();
  Serial.println("attente pression sur BP");
}

void loop()
{
  buttonState = digitalRead(button);
  if (buttonState == false)
  {
    for (int f = 3; f < 14; f++)
    {
      digitalWrite(led[(f - 1)], LOW);Serial.print(f-1);Serial.println(" est low");
      digitalWrite(led[f], HIGH);Serial.print(f);Serial.println(" est high");
      delay(500);
    }
    digitalWrite(led[13], LOW);Serial.print("13");Serial.println(" est low");
  }
  else
  {
   // raz();
  }
}
void raz()
{
  for (int f = 3; f < 14; f++)
    {
      digitalWrite(led[f], LOW);Serial.print(f);Serial.println(" est low");
    }
  }

j'ai ajouté les instructions "serial.print" qui permettent de suivre le prg
donc, tu charges le prg dans ta platine, tu ouvres le moniteur en 57600 bauds
et tu regardes ce qui s'inscrit
tu utilises indifférement une des touches de direction du shield LCD

Bonjour ,
Pour le câblage j'ai tout simplement mis une résistance de 60 ohm à chaque sortie ..
En rentrant ce soir je vous fait une photo de mon montage
J'ai tien compris à ton programme , je ne connaît que très très peu de fonction , celle que l'on peux trouver dans l'exemple button et blink donc ...

ici tu trouveras dans la colonne de gauche l'instruction "FOR" cliques dessus et tu auras les explications.

ce lien est à garder pendant toute la période d'apprentissage :slight_smile:

tu peux retrouver cette page en allant dans le bandeau vert en haut de cette page sur l'onglet "learning" puis "reférence".

Super ! Je chercher un endrois pour apprendre les fonction ! Merci

Je suis horriblement désolé , je viens d'arriver chez moi et enfaite j'ai mal fait le branchement , je devait être bourré hier soir ...

ne te reste plus qu'à cuver :slight_smile:

boire ou coder, il faut choisir, tu as fait les deux :slight_smile:

ca arrive à tout le monde ce genre de truc à la c...