Problème d'intervalle (débutant).

Bonjour à tous.

Je viens de réaliser un petit chenillard avec 40 leds.
J’apprends à programmer à utiliser des boucles, les allumages et des extinctions de leds.
je réalise de multiples effets pour en appréhender la programmation
Le B.A, BA du débutant.

Dans ce programme, toutes les leds sont allumées et une seule s’éteint en faisant des allez et retour. On a l’impression qu’une barre noire se promène en faisant des allez et venue.
J’aimerais, pour que cela soit plus visuel que ce soit deux leds cote à cote qui s’éteignent.
Une seule, ça fait un peu maigre.
C’est là que ça coince, je n’y parviens pas, problème d’incrémentation ou d’intervalle. J’ai beau retourner le problème dans tous les sens, je bute.
Si vous avez une solution pour cette amélioration, je suis preneur et je vous en remercie par avance.

Cordialement.

int pin[40]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
int tempo=40; //tempo pour allumer les leds 


void setup(){
for (int i = 0 ; i<=40 ; i++){ 
pinMode(pin[i], OUTPUT);
}
}

void loop(){
for (int i = 0 ; i<=40 ; i++){ // boucle for pour allumer toutes les leds
digitalWrite(pin[i], HIGH);
}

for (int i = 1 ; i<=38 ; i++){ 
digitalWrite(pin[i], LOW);
delay(tempo);
digitalWrite(pin[i],HIGH);
}
for (int i = 38; i>=1 ; i--){ 
digitalWrite(pin[i], LOW);
delay(tempo);
digitalWrite(pin[i], HIGH);
}
}

Bonjour,

Il suffit d’incrémenter/décrémenter de 2

  for (int i = 1 ; i <= 38 ; i+=2) {
    digitalWrite(pin[i], LOW);
    digitalWrite(pin[i+1], LOW);
    delay(tempo);
    digitalWrite(pin[i], HIGH);
    digitalWrite(pin[i+1], HIGH);
  }

Même principe pour la décrémentation

Bonjour Kamill

ça fonctionne du tonnerre ! ! ! !

Un grand merci Kamill pour ta disponibilité ainsi que de l'aide que tu apportes au débutant que je suis, surtout que ce n'est pas la première fois que tu me sors d'un mauvais pas, sois en une nouvelle fois remercié.

Cordialement.

Et la pauvre pin[0];elle est oubliée dans l'histoire....

Je pense que balisto56 veut laisser les deux leds extrêmes toujours allumées.

Euh alors pauvre pin[39] :slight_smile:

(Cf i <[color=red]=[/color] 38 et digitalWrite(pin[i[color=red]+1[/color]], LOW);)

Oui mais justement je pense (peut être à tord) qu’il veut laisser les leds extrêmes (0 et 39) allumées.

balisto56: J’apprends à programmer à utiliser des boucles, les allumages et des extinctions de leds. je réalise de multiples effets pour en appréhender la programmation Le B.A, BA du débutant.

un conseil : n'utilise jamais les pin 0 et 1, garde les pour la remonté d'info dans la console IDE idem pour les 14 a 21 qui ont une utilité particulière sur une MEGA (et d'autres d'ailleurs ...)

@kamill - oui mais mon point c'est que vous ne touchez pas la première mais que vous touchez la dernière ...

EDIT - en fait ça fonctionne car i augmente 2 par 2 depuis 1 donc ne sera jamais à 38

non puisque i va de 1 à 37 (37+2>38) et donc i+1 de 2 à 38
mais je suis d’accord que i<=37 aurait peut être été plus explicite

kamill: Oui mais justement je pense (peut être à tord) qu'il veut laisser les leds extrêmes (0 et 39) allumées.

Bonjour.

Effectivement pour "l’esthétique" la led 01 et la 40 sont toujours allumées. Je vois J-M-L que rien ne t'échappe à ta sagacité et soit en remercié, ça m'aide.

Mon chenillard est composé de 40 bandes de led de 50 cm de long misent les unes sur les autres espacées de 2 CM, le tout est placé derrière.un verre dépoli. Les effets sont assez sympa. Surtout celui qui imite une sorte de vu-mètre géant, il fonctionne avec la fonction "random". Je suis en train de réaliser plusieurs petits programmes qui produisent des effets différents. Le but est de rassembler tous ces petits programmes et d'en faire un géant qui fonctionnera en boucle.

Je m'initie à la programmation et je vous remercie de m'aider dans des problème qui vous sont simple pour vous mais bien embêtant pour moi.

Cordialement.