User manual
Itt is egymásba skatulyázott hurkokat alkalmazunk. Az előzőleg ismertetett programrésznek
megfelelő első belső hurok után, azaz miután kigyulladt a 3-es számú LED, elkezdődik egy
további hurok az ellenkező irányú futófény számára. A lista elemei minden esetben 0-val
kezdődő számozásúak. A negyedik LED ezek után a 3-es számot viseli.
Egy hurok visszafelé történő futtatásához a for...range() kibővített szintaxist alkalmazzuk. A csak
egy végérték megadásával ellentétben három paramétert is megadhatunk: a kezdeti értéket, a
lépés nagyságát és a végértéket. Példánkban ezek a következők:
Kezdeti érték
z-1
A z változó tartalmazza a LED-ek számát. Mivel a listák elemeinek a
számozása
0-val kezdődik, az utolsó LED sorszáma z-1.
Lépésméret
-1
Ha a lépésméret -1 , akkor minden egyes hurokmenet egy számmal
visszaszámlál.
Végérték
-1
Egy hurokban a végérték mindig az az első érték, amelyet nem érünk el.
Az első előreszámláló hurokban a hurokszámláló
0-val kezd, és
példánkban a
0, 1, 2, 3értéket veszi fel a LED-ek címzéséül. A négyszeri
hurokmenet esetén az érték nem éri el a
4 -et. A visszaszámláló
huroknak a
0 -val kell végződnie, és így elsőként a -1 az az érték, amelyet
nem érhet el
A már ismertetett második hurok a négy LED-et sorjában a fordított irányban gyújtja ki. Ezután
a külső hurok újraindítja a teljes ciklust, amely itt, mivel mindegyik LED kétszer villog, kétszer
annyi ideig tart, mint az első programrészben.
3. minta
Ha a felhasználó egy 3-ast adott be, egy hasonló hurok kezdődik el. A LED-eket itt is mindkét
irányban megszámlálja a hurok, de nem kapcsolódik ki azonnal a bekapcsolás után.
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)
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)
50