User manual

56
6.1.1 Voilà comment cela fonctionne
Une partie de ce programme vous est familière, certains éléments ne vous disent rien car nous faisons ici
une petit tour dans la programmation orientée objet. Les bibliothèques sont importées au début, comme
vous le savez déjà. Cette fois, une seule variable,
LED, est fixée pour le port GPIO 18, qui est initialisé comme
une sortie.
print ("Ctrl+C arrête le programme") Étant donné que ce programme avec une construction
try...except s'exécute et doit être arrêté par l'utilisateur, des informations correspondantes s'affichent à
l'écran pour l'utilisateur.
p = GPIO.PWM(LED, 50) La fonction GPIO.PWM() de la bibliothèque GPIO est essentielle pour la sortie des
signaux PWM. Cette fonction nécessite deux paramètres, le port GPIO et la fréquence du signal PWM. Dans
notre cas, le port GPIO est fixé avec la variable
LED et la fréquence est de 50 hertz (Hz) (oscillations par
seconde).
Pourquoi est-ce que la fréquence de 50 Hz est idéale pour PWM ?
L'œil humain ne perçoit pas bien les changements de lumière plus rapides que 20 Hz. Étant donné que le
courant alternatif en Europe utilise une fréquence de 50 Hz, de nombreuses sources lumineuses
clignotent à cette fréquence et ce clignotement n'est pas perceptible pour l'œil humain. Si une LED
clignote à plus de 20 Hz mais moins de 50 Hz, des interférences avec d'autres sources lumineuses
peuvent se produire et perturber l'effet perçu de variation d'intensité lumineuse.
GPIO.PWM() génère un soi-disant objet qui est enregistré dans la variable p. Ces objets sont davantage que
de simples variables. Les objets peuvent avoir des propriétés différentes et sont influencés par des soi-disant
méthodes. Les méthodes, séparées par un point, sont spécifiées directement après le nom de l'objet.
p.start(0) La méthode start() lance la génération du signal PWM. Pour ce faire, un rapport cyclique doit
encore être spécifié. Dans notre cas, le rapport cyclique est
0 et la LED est toujours éteinte. La boucle infinie
commence maintenant dans laquelle deux boucles sont imbriquées directement successivement, ce qui
permet de faire varier l'intensité de la LED alternativement entre une intensité forte et une intensité faible.
for c in range(0, 101, 2): La boucle compte par incrément de 2 depuis 0 jusqu'à 100. La valeur est
toujours spécifiée pour arrêter une boucle
for, qui n'est pas atteinte en pratique, dans notre cas : 101.
p.ChangeDutyCycle(c) La méthode ChangeDutyCycle() définit à chaque cycle de boucle le rapport
cyclique de l'objet PWM sur la valeur du compteur de boucle, également augmenté de 2 % à chaque fois,
jusqu'à ce que dernier cycle soit à 100 % et que la LED éclaire avec sa pleine luminosité.
time.sleep(0.1) On attend 0,1 seconde à chaque cycle de boucle avant que le cycle suivant n'augmente le
rapport de cycle de 2 %.
for c in range(100, -1, -2):
p.ChangeDutyCycle(c); time.sleep(0.1)