User manual
4.1.1 Így működik
A program menete messzemenően ismert. A most egy kissé hosszabb piros fázis alatt a kék
gyalogos jelzőlámpának gyorsan kell villognia.
blau = 4 Egy új változó definiálja a gyalogos jelzőlámpa LED-jét a listában.
Ampel=[4,18,23,24] A lista négy elemre bővült a négy LED vezérlési lehetősége miatt.
GPIO.setup(Ampel[blau], GPIO.OUT, initial=False) Megtörténik az új LED inicializálása, amely
kezdetben ki van kapcsolva. Ez az alapbeállítás a közlekedési lámpa zöld fázisa alatt.
A jelzőlámpa ciklusban a piros fázis kezdete után 0,6 másodperccel elkezdődik egy hurok,
amely villogtatja a kék LED-et. Erre a célra egy
for-hurok szolgál, amely a korábbi kísérletekben
alkalmazott
while-hurokkal ellentétben mindig egy adott számú hurokmenetet alkalmaz, és nem
fut mindaddig, amíg nem teljesül egy meghatározott megszakítási feltétel.
for i in range(10): Mindegyik for-huroknak egy hurokszámlálóra van szüksége, egy változóra,
amely minden egyes hurokmenet után új értéket vesz fel. Az egyszerű hurokszámláló számára
az összes programozási nyelvben az
i változónév honosodott meg. Természetesen minden
más név is megengedett. Ez az érték, mint bármely más változó a hurkon belül, lekérdezhető,
de nincs rá szükség. A
range paraméter a hurokban megadja azt, hogy hányszor fut le a hurok,
pontosabban, hogy mily értékeket vehet fel a hurokszámláló. Példánkban a hurok tízszer fut le.
Az
i hurokszámláló eközben 0-tól9-ig terjedő értékeket kap. A hurkon belül az új kék LED
bekapcsolódik, és 0,05 másodperc múlva újra kikapcsolódik. További 0,05 másodperc múlva
befejeződik egy hurokmenet, és a következő megint a LED bekapcsolódásával indul. Ily
módon tízet villan, ami összesen 1 másodpercig tart.
time.sleep(2)
GPIO.output(Ampel[gruen],False); GPIO.output(Ampel[gelb],True)
time.sleep(0.6)
GPIO.output(Ampel[gelb],False); GPIO.output(Ampel[rot],True)
time.sleep(0.6)
for
i
in
range(10):
GPIO.output(Ampel[blau],True); time.sleep(0.05)
GPIO.output(Ampel[blau],False); time.sleep(0.05)
time.sleep(0.6)
GPIO.output(Ampel[gelb],True); time.sleep(0.6)
GPIO.output(Ampel[rot],False)
GPIO.output(Ampel[gelb],False)
GPIO.output(Ampel[gruen],True)
except KeyboardInterrupt:
GPIO.cleanup()
time.sleep(0.6)
for
i
in range(10):
GPIO.output(Ampel[blau],True); time.sleep(0.05)
GPIO.output(Ampel[blau],False); time.sleep(0.05)
time.sleep(0.6)
38