User manual

51
for i in range(w):
for j in range(z):
GPIO.output(LED[j], True); time.sleep(t)
GPIO.output(LED[j], False)
for j in range(z-1, -1, -1):
GPIO.output(LED[j], True); time.sleep(t)
GPIO.output(LED[j], False)
Des boucles imbriquées les unes dans les autres sont également utilisées ici. Après la première boucle
interne, qui correspond à la partie du programme décrite ci-dessus, après que la LED avec le numéro 3 s'est
allumée, une autre boucle pour le chenillard allant à contresens commence. Les éléments de la liste sont
toujours numérotés à partir de 0. La quatrième LED a donc le numéro 3.
Pour qu'une boucle puisse s'exécuter en arrière, nous utilisons la syntaxe étendue de
for...range(). A la
place de spécifier seulement une valeur finale, trois paramètres peuvent également être définis : la valeur
initiale, l'incrément et la valeur finale. Dans notre exemple, ils étaient :
Valeur initiale z-1
La variable
z contient le nombre de LED. Étant donné que la numérotation des
éléments de la liste commence avec
0, la dernière LED a le numéro z-1.
Incrément -1
Avec un incrément égal à
-1. Chaque cycle de boucle décompte un nombre en
arrière.
Valeur finale -1
La valeur finale dans une boucle est toujours la première valeur qui n'est pas
atteinte. Dans la première boucle comptée en avant, le compteur de boucle
commence à 0 et atteint la valeur 0, 1, 2, 3 dans notre exemple pour adresser les
LED. Le
4 n'est pas atteint en quatre cycles de boucles. La boucle décomptée en
arrière doit finir avec
0 et la valeur -1 ne doit donc pas être atteinte.
La deuxième boucle décrite permet de faire clignoter les quatre LED successivement dans le sens inverse.
Après cela, la boucle externe recommence le cycle dans son ensemble qui dure ici deux fois plus longtemps
que la première partie du programme parce que chaque LED clignote deux fois.
Motif 3
Si l'utilisateur a entré un 3, une boucle semblable est lancée. Ici, les LED sont également comptées dans les
deux sens mais pas immédiatement après l'allumage puis l'extinction.
elif e == "3":
for i in range(w):
for j in range(z):
GPIO.output(LED[j], True); time.sleep(t)
time.sleep(2*t)
for j in range(z-1, -1, -1):
GPIO.output(LED[j], False); time.sleep(t)
time.sleep(2*t)