User manual
59
GPIO.setmode(GPIO.BCM); LED = [18,25]
GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
print ("Ctrl+C arrête le programme")
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 Voilà comment cela fonctionne
La structure de base du programme correspond à celle de l'expérience précédente avec quelques petites
améliorations.
LED = [18,25]; GPIO.setup(LED[0], GPIO.OUT); GPIO.setup(LED[1], GPIO.OUT)
A la place d'un variable pour le port GPIO, une liste est maintenant définie avec deux variables et les deux
ports GPIO
18 et 25 sont initialisés comme des sorties pour les LED.
p = GPIO.PWM(LED[0], 50); q = GPIO.PWM(LED[1], 50); p.start(0); q.start(0)
Ensuite les deux objets p et q sont également créés pour générer les signaux PWM pour les deux LED avec
une fréquence de 50 Hz pour chacune.
for c in range(0, 101, 2):
p.ChangeDutyCycle(c); q.ChangeDutyCycle(c)
time.sleep(0.1)
Dans la première boucle, le rapport cyclique des deux objets PWM est augmenté simultanément, incrément
par incrément. Les deux LED se comportent de la même façon dans cette phase.
q.ChangeFrequency(10) A la fin de cette boucle, lorsque les deux LED ont atteint la pleine luminosité, la
fréquence du signal PWM est réduite de 10 Hz par la méthode
ChangeFrequency(). Cette fréquence est
encore perçue comme un clignotement pour l'œil humain.
for c in range(0, 101, 2):
p.ChangeDutyCycle(100-c); q.ChangeDutyCycle(c)
time.sleep(0.1)