Instructions

57
GPIO.setmode(GPIO.BCM); LED = [18,25]
GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
print ("Strg+C beendet das Programm")
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 So funktioniert es
Die Grundstruktur des Programms entspricht der des vorherigen Experiments mit ein paar kleinen Erweite-
rungen.
LED = [18,25]; GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
Statt einer Variablen für den GPIO-Port wird jetzt eine Liste mit zwei Variablen definiert, und damit werden
zwei GPIO-Ports,
18 und 25, als Ausgänge für die LEDs initialisiert.
p = GPIO.PWM(LED[0], 50); q = GPIO.PWM(LED[1], 50); p.start(0); q.start(0)
Anschließend werden auch die zwei Objekte p und q angelegt, die die PWM-Signale für die beiden LEDs mit
jeweils 50 Hertz erzeugen.
for c in range(0, 101, 2):
p.ChangeDutyCycle(c); q.ChangeDutyCycle(c)
time.sleep(0.1)
In der ersten Schleife werden die Tastverhältnisse beider PWM-Objekte gleichzeitig Schritt für Schritt erhöht.
Die beiden LEDs verhalten sich in dieser Phase gleich.
q.ChangeFrequency(10) Am Ende dieser Schleife, wenn beide LEDs die volle Helligkeit erreicht haben, wird
die Frequenz des PWM-Signals der zweiten LED über die Methode
ChangeFrequency() auf 10 Hertz herab-
gesetzt. Diese Frequenz nimmt das Auge noch als Blinken wahr.
for c in range(0, 101, 2):
p.ChangeDutyCycle(100-c); q.ChangeDutyCycle(c)
time.sleep(0.1)