GPIO.setmode(GPIO.BCM); LED = [18,25]
GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
print ("Strg+C beëindigt het programma")
p = GPIO.PWM(LED[0], 50); q = GPIO.PWM(LED[1], 50)
p.start(0)
q.start(0)
try:
while True:
for c in range(0, 101, 2):
p.ChangeDutyCycle(c); q.ChangeDutyCycle(c)
time.sleep(0.1)
q.ChangeFrequency(10)
for c in range(0, 101, 2):
p.ChangeDutyCycle(100-c); q.ChangeDutyCycle(c)
time.sleep(0.1)
q.ChangeFrequency(50)
except KeyboardInterrupt:
p.stop(); GPIO.cleanup()
6.1.3 Zo werkt het
De basisstructuur van het programma komt overeen met het vorige experiment met een paar kleine uit-
breidingen.
LED = [18,25]; GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
In plaats van een variabele voor de GPIO-poort wordt nu een lijst met twee variabelen gedefinieerd, en
hiermee worden twee GPIO-poorten
p = GPIO.PWM(LED[0], 50); q = GPIO.PWM(LED[1], 50); p.start(0); q.start(0)
Aansluitend worden ook de twee objecten
steeds 50 Hertz creëren.
for c in range(0, 101, 2):
p.ChangeDutyCycle(c); q.ChangeDutyCycle(c)
time.sleep(0.1)
In de eerste lus worden de pulsverhoudingen van de beide PWM-objecten gelijktijdig stap-voor-stap
verhoogd. De beide LED's gedragen zich in deze fase gelijk.
q.ChangeFrequency(10)
bereikt, wordt de frequentie van het PWM-signaal van de tweede LED via de methode
naar 10 Hertz verlaagd. Deze frequentie wordt door het oog nog als knipperen waargenomen.
for c in range(0, 101, 2):
p.ChangeDutyCycle(100-c); q.ChangeDutyCycle(c)
time.sleep(0.1)
und
, als uitgangen voor de LED's geïnitialiseerd.
18
25
en
p
q
Aan het einde van deze lus, wanneer de beide LED's de volledige lichtsterkte hebben
aangemaakt, die de PWM-signalen voor de beide LED's met
ChangeFrequency()
59