User manual
6.1.3
Ez így működik:
A program alapszerkezete megfelel az előző kísérletével, egy pár kiegészítéssel.
LED = [18,25]; GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
A GPIO-port számára elhelyezett változó helyett most két változóból álló lista van definiálva, és
így két GPIO-port, a
18. és a 25., van kimenetként inicializálva a két LED számára.
p = GPIO.PWM(LED[0], 50); q = GPIO.PWM(LED[1], 50); p.start(0); q.start(0)
Ezután a két objektum, a p és a q is elhelyezésre kerül, amelyek előállítják a PWM-jelet a két
LED számára, mindkettőhöz 50 Hz frekvenciával.
Az első hurokban a két PWM-objektum kitöltési tényezője egyidejűleg növekszik lépésről
lépésre. Ebben a fázisban a két LED azonos módon viselkedik.
q.
ChangeFrequency(10) Ennek a huroknak a végén, amikor mindkét LED elérte a teljes
fényességét, a második LED PWM-jelének a frekvenciáját 10 Hz-re csökkenti a
ChangeFrequency() metódus. Ezt a frekvenciát a szemünk még villogásnak érzékeli.
GPIO.setmode(GPIO.BCM); LED = [18,25]
GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
print
("Strg+C beendet das program")
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()
for c in range(0, 101, 2):
p.ChangeDutyCycle(c); q.ChangeDutyCycle(c)
time.sleep(0.1)
for c in range(0, 101, 2):
p.ChangeDutyCycle(100-c); q.ChangeDutyCycle(c)
time.sleep(0.1)
59