🛠 Variateur de lumière : PWM sur une LED
Objectifs
Comprendre la modulation de largeur d'impulsion (PWM) : varier la luminosité d'une LED en faisant varier le rapport cyclique. Le connecteur J8 du Pi 2 expose une sortie PWM matérielle sur GPIO18 ; tu vas d'abord utiliser le PWM logiciel de RPi.GPIO (simple et flexible), puis activer le PWM matériel via config.txt.
Matériel
- Raspberry Pi 2 Model B sous Raspberry Pi OS 32 bits
- LED + résistance 330 Ω sur GPIO18 (broche 12 du J8)
- Paquet : sudo apt install python3-rpi.gpio
Code complet
#!/usr/bin/env python3
"""pwm_led.py — rampe d'intensite PWM (logiciel) sur GPIO18."""
import RPi.GPIO as GPIO
from time import sleep
PIN = 18 # aussi la sortie PWM materielle du J8
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)
pwm = GPIO.PWM(PIN, 1000) # fréquence 1 kHz
pwm.start(0)
try:
while True:
for dc in range(0, 101, 5): # monte doucement
pwm.ChangeDutyCycle(dc)
sleep(0.05)
for dc in range(100, -1, -5): # descend doucement
pwm.ChangeDutyCycle(dc)
sleep(0.05)
except KeyboardInterrupt:
pass
pwm.stop
GPIO.cleanup
Vérification attendue
La LED s'intensifie puis faiblit en boucle continue (respiration). À 0 % elle est éteinte, à 100 % pleine intensité. Pour le PWM matériel, ajoute dtoverlay=pwm (ou pwm-2chan) dans /boot/config.txt, redémarre, puis pilote /sys/class/pwm : le signal reste exact même sous charge, contrairement au PWM logiciel.
Erreurs fréquentes
- Confusion PWM matériel/logiciel : le PWM logiciel de RPi.GPIO fonctionne sur n'importe quelle broche mais se dégrade sous forte charge CPU ; le matériel (GPIO18) reste précis.
- Oublier GPIO.cleanup : la broche reste occupée et le script suivant échoue.
- Fréquence trop basse : sous ~100 Hz la LED scintille visiblement ; reste à 1 kHz.
- Broche 12 utilisée en PWM matériel sans éditer config.txt ni redémarrer : rien n'apparaît dans /sys/class/pwm.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython