Modulation en largeur l'impulsion - PWM

Nous allons voir comment réaliser simplement une sortie PWM avec circuitPython. Cela équivaut sur Arduino à la fonction analogWrite().

Pour plus d'informations, je vous renvoie à ce tutoriel pour CPX.

MéthodeAllumage variable d'une LED

Dans cet exemple, nous allons allumer une LED d'autant plus fort que la luminosité ambiante est importante. Nous ne pouvons pas utiliser ici une tension variable car les LED fonctionnent à tension fixe autour de 3V. Pour les allumer plus ou moins fort, il faut donc les allumer à fond une fraction du temps. Si sur une période donnée elle est allumée 50% du temps, elle paraîtra deux fois moins brillante. C'est le principe du code ci-dessous.

Le montage est simple. Nous allons ajouter à l'exemple précédent une LED sur la broche D13.

1
import time
2
import board
3
import analogio
4
import pulseio
5
6
adc = analogio.AnalogIn(board.A0)
7
pwm = pulseio.PWMOut(board.D13)
8
9
while True:
10
    pwm.duty_cycle = adc.value

Remarque

  • les valeurs pour duty_cycle sont comprises entre 0 et 65535 comme pour la lecture analogique adc.value. Cela simplifie le programme.

  • En l'absence de paramètre frequency pour PWMout, la fréquence par défaut est de 500 Hz ce qui est adapté à notre utilisation.