User manual
48
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 ("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
random geïmporteerd, om een willekeurig knipperpatroon te creëren.
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] Voor de LED's wordt weer een lijst met GPIO-nummers gedefinieerd, opdat men deze
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
for-lus via de lijst LED. De lusteller i neemt achtereenvolgens de individuele waarden uit de lijst aan, in
het voorbeeld de GPIO-poortnummer van de LED's en wordt niet eenvoudig bijgeteld zoals in de gebruikte
for-lussen tot nu toe. Op deze manier kunnen willekeurig lange lijsten worden afgewerkt. De lengte van de
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
0 ingesteld, om eventueel uit
eerdere experimenten brandende LED's uit te schakelen.
z = len(LED); w = 5; t = 0.2