for j in range(z):
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 ("Ongeldige invoer")
except KeyboardInterrupt:
GPIO.cleanup()
5.1.1 Zo werkt het
De eerste regels van het programma met de definitie van de UTF-8-codering en de import van de
noodzakelijke bibliotheken zijn al vanuit eerdere experimenten bekend. Hier wordt vervolgens de bibliotheek
geïmporteerd, om een willekeurig knipperpatroon te creëren.
random
Bij de ontwikkeling van dit programma is er rekening mee gehouden, dat het multi-inzetbaar is, zich dus
probleemloos met meer dan vier LED's kan worden uitgebreid. Bij een goede programmeerstijl hoort
tegenwoordig een dergelijke flexibiliteit. In het voorbeeld van de Raspberry Pi kunnen dergelijke
geprogrammeerde programma's niet alleen met nieuwe GPIO-poorten worden uitgebreid, maar ook
gemakkelijk op andere GPIO-poorten overschrijven, mocht dit hardwaretechnisch noodzakelijk zijn.
LED = [4,18,23,24]
poorten alleen vast moet invoeren op een plaats in het programma.
for i in LED:
GPIO.setup(i, GPIO.OUT, initial=0)
In plaats van, zoals in vorige programma's, de GPIO-poorten van de LED's apart te initialiseren, loopt dit keer
een
-lus via de lijst
for
het voorbeeld de GPIO-poortnummer van de LED's en wordt niet eenvoudig bijgeteld zoals in de gebruikte
-lussen tot nu toe. Op deze manier kunnen willekeurig lange lijsten worden afgewerkt. De lengte van de
for
lijst hoeft tijdens de ontwikkeling van het programma niet eens bekend te zijn.
De vier GPIO-poorten voor de LED's worden als uitgangen gedefinieerd en op
eerdere experimenten brandende LED's uit te schakelen.
z = len(LED); w = 5; t = 0.2
48
GPIO.output(LED[j], False)
Voor de LED's wordt weer een lijst met GPIO-nummers gedefinieerd, opdat men deze
. De lusteller
neemt achtereenvolgens de individuele waarden uit de lijst aan, in
LED
i
ingesteld, om eventueel uit
0