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.
// 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
@+
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