Go Down

Topic: status (Read 1 time) previous topic - next topic

fvr1

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.
Code: [Select]

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

icare

Bonjour,
Code: [Select]
  // 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 :
Code: [Select]
  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
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

68tjs

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.

fvr1

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.

Christian_R


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
Christian

fvr1

Avec pas mal de retard merci pour les infos.

Go Up