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éthode : Allumage 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.
import time
import board
import analogio
import pulseio
adc = analogio.AnalogIn(board.A0)
pwm = pulseio.PWMOut(board.D13)
while True:
pwm.duty_cycle = adc.value
Remarque :
les valeurs pour
duty_cycle
sont comprises entre 0 et 65535 comme pour la lecture analogiqueadc.value
. Cela simplifie le programme.En l'absence de paramètre
frequency
pourPWMout
, la fréquence par défaut est de 500 Hz ce qui est adapté à notre utilisation.