status

Hi !

Tout neuf dans le cambouis Arduino, il y a un petit truc que je ne comprends pas, j'ai créée un petit programme simple de chenillard, il fonctionne une fois et puis c'est tout, il ne tourne pas en boucle.

 int NbrLed = 6; // nbre de leds dans le tableau
 int ledPins[] = { 2,3,4,5,6,7 };  // Tableau contenant les Pins pour les leds
 
 int interval = 100; // // Interval entre deux actions, 100 ms
 
 void setup(){
   // Activer les pins en sortie
   for( int i=0; i<NbrLed; i++ )
     pinMode( ledPins[i], OUTPUT );
     
     pinMode(10, OUTPUT);     
     pinMode(13, OUTPUT); 
 }
 // boucle programme qui appelle les fonctions
 void loop(){
   fvr1();
   chenillard();
   delay( 6000 );
   chenillard2();
   }
 

 // chenillard simple
 // fonction pour allumer les leds
  void chenillard(){
   int x,status;
   for( int i=0; i<NbrLed; i++ ){
     digitalWrite( ledPins[i], HIGH );
     delay( interval );
 //    digitalWrite( ledPins[i], LOW );
     
    digitalWrite(10, status);
    digitalWrite(13, status);
    status = !status; 
   }
 }
 
  // fonction pour eteindre les leds
  void chenillard2(){
   int x,status;
   for( int i=NbrLed-1; i<0; i-- ){
     digitalWrite( ledPins[i], LOW );
     delay( interval );
 //    digitalWrite( ledPins[i], LOW );
     
    digitalWrite(10, status);
    digitalWrite(13, status);
    status = !status; 
   }
 }

Auriez-vous une idée ?

Par ailleurs, à quoi sert "status", est-ce indispensable ou pas ? Sur le site Arduino, rien trouvé et pas plus sur gogol.
Sur mon Arduino j'ai un shield Escudo Dos de chez Spark Fun.

Thanks

Bonjour,

  // fonction pour eteindre les leds
  void chenillard2(){
   int x,status;
   for( int i=NbrLed-1; i<0; i-- ){      <<<<<<<<<<<<<<<<<*****************************
     digitalWrite( ledPins[i], LOW );
     delay( interval );
 //    digitalWrite( ledPins[i], LOW );
     
    digitalWrite(10, status);
    digitalWrite(13, status);
    status = !status; 
   }
 }

Dans ta boucle for, la condition de fin n'est pas bonne. Tu devrais mettre :

  for( int i=NbrLed-1; i>=0; i-- ){

Les pins 10 et 13 devraient faire quoi ?
La variable status de chenillard() et chenillard2() ne sont pas les mêmes (variable locale existant uniquement dans la fonction) et donc dans l'état il ne se passe rien au niveau des sorties 10 et 13.
Dis nous ce que devrait faire les sorties 10 et 13
@+

Tu as a ta disposition le SerialMonitor qui te permet d'afficher des messages avec Serial.print("machin chose").

Place donc dans le programme des messages qui te permettront de voir si le programme se déroule correctement et où il coince.

Hi !

Pffff !!!
Comme quoi, il faut se relire plus de deux fois, le truc tout bête et tellement logique.
Enfin, merci Icare, c'est nickel ça fonctionne parfaitement.

Pour les variables status, on m'a dit de les mettre pour allumer la led sur l'Escudo Dos c'est tout, sinon je ne sais pas à quoi elles servent vraiment, d'après ce que j'ai vu pas à grand chose.

68tjs, merci pour le conseil, que je vais plus que certainement appliquer pour ne plus faire le genre d'erreur que j'ai fait dans ma boucle.

fvr1:
Pour les variables status, on m'a dit de les mettre pour allumer la led sur l'Escudo Dos c'est tout, sinon je ne sais pas à quoi elles servent vraiment, d'après ce que j'ai vu pas à grand chose.

La variable status vaut alternativement LOW puis HIGH à chaque passage dans la boucle.
La ligne status = !status; permet de basculer la valeur à chaque passage (! signifie inverser).
Les lignes
digitalWrite(10, status);
digitalWrite(13, status);
font clignoter les pins 10 et 13

Avec pas mal de retard merci pour les infos.