Instructions
46
for j in range(z):
GPIO.output(LED[j], False)
time.sleep(t)
elif e == "5":
for i in range(w*z):
j = random.randint(0,z-1)
GPIO.output(LED[j], True); time.sleep(t)
GPIO.output(LED[j], False)
else:
print ("Ungültige Eingabe")
except KeyboardInterrupt:
GPIO.cleanup()
5.1.1 So funktioniert es
Die ersten Zeilen des Programms mit der Definition der UTF-8-Codierung und dem Import der notwendigen
Bibliotheken sind bereits aus früheren Experimenten bekannt. Hier wird zusätzlich die Bibliothek
random
importiert, um ein zufälliges Blinkmuster zu erzeugen.
Bei der Entwicklung dieses Programms wurde darauf geachtet, dass es möglichst vielseitig nutzbar ist, sich
also problemlos auf mehr als vier LEDs erweitern lässt. Zu einem guten Programmierstil gehört heute eine
solche Flexibilität. Am Beispiel des Raspberry Pi lassen sich derart programmierte Programme nicht nur um
neue GPIO-Ports erweitern, sondern auch leicht auf andere GPIO-Ports umschreiben, wenn dies hardware-
technisch notwendig ist.
LED = [4,18,23,24] Für die LEDs wird wieder eine Liste mit GPIO-Portnummern definiert, damit man diese
Ports nur an einer Stelle im Programm fest eintragen muss.
for i in LED:
GPIO.setup(i, GPIO.OUT, initial=0)
Anstatt wie in früheren Programmen die GPIO-Ports der LEDs einzeln zu initialisieren, läuft diesmal eine for-
Schleife über die Liste
LED. Der Schleifenzähler i nimmt nacheinander die einzelnen Werte aus der Liste an,
im Beispiel die GPIO-Portnummern der LEDs, und wird nicht einfach hochgezählt, wie in den bisher verwen-
deten
for-Schleifen. Auf diese Weise können beliebig lange Listen abgearbeitet werden. Die Länge der Liste
muss bei der Entwicklung des Programms nicht einmal bekannt sein.
Die vier GPIO-Ports für die LEDs werden als Ausgänge definiert und auf
0 gesetzt, um eventuell aus früheren
Experimenten leuchtende LEDs abzuschalten.
z = len(LED); w = 5; t = 0.2