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)
Ook hier worden in elkaar geschakelde lussen gebruikt. Na de eerste binnenste lus, die overeenkomt met het
eerder beschreven programmadeel, dus nadat de LED met nummer 3 brandt, start nog een lus voor het
looplicht in tegengestelde richting. Lijstelementen zijn altijd met 0 beginnend genummerd. De vierde LED
heeft dus het nummer 3.
Om een lus achterwaarts te laten lopen, gebruiken wij de uitgebreide syntax van
for...range(). In plaats
van slechts een eindwaarde aan te geven, kunnen ook drie parameters worden aangegeven: Startwaarde,
stapgrootte en eindwaarde. In ons voorbeeld zijn dat:
Startwaarde z-1
De variabele
z bevat het aantal LED's. Omdat de nummering van de lijstelementen
met
0 begint, heeft de laatste LED het nummer z-1.
Stapgrootte -1 Bij een stapgrootte van -1 telt elke lusdoorloop een getal terug.
Eindwaarde -1
De eindwaarde in een lus is altijd de eerste waarde, die niet wordt bereikt. In de
eerste vooruit tellende lus begint de lusteller bij
0 en bereikt in ons voorbeeld de
waarde
0, 1, 2, 3, om de LED's te adresseren. De 4 wordt bij vier keer een
lusdoorloop niet bereikt. De achterwaarts tellende lus moet met
0 eindigen en zo de
waarde
-1 als eerste niet bereiken.
De beschreven tweede lus laat opeenvolgend de vier LED's in omgekeerde richting knipperen. Hierna start de
buitenste lus van de totale cyclus opnieuw, die hier, omdat elke LED twee keer knippert, twee keer langer
duurt dan in het eerst programmaonderdeel.
Patroon 3
Als de gebruiker een 3 heeft ingevoerd, start een overeenkomstige lus. Hier worden de LED's ook in beide
richtingen verder geteld, maar niet direct na het inschakelen weer uitgeschakeld.
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)