🛠 Variation d'intensité d'une LED avec le PWM matériel (GPIO18)

Raspberry Pi Model B+ (2014) — Fiche de carte · intermediaire · Schéma : IMG-model-b-plus-intermediaire-1-modelbp-pwm-led.svg — LED avec résistance 330 Ω sur GPIO18 (broche 12), la broche PWM matérielle du BCM2835, GND en broche 14 ; le signal carré 200 Hz est dessiné en encart.

Objectifs

Apprivoiser la modulation de largeur d'impulsion (PWM) : faire « respirer » une LED en variant le rapport cyclique. Le BCM2835 du Model B+ expose une sortie PWM matérielle sur GPIO18 (broche 12) — la seule du connecteur 40 broches à l'état par défaut — garantie sans à-coups même sous charge CPU.

Matériel

Code complet

sudo apt install -y python3-rpi.gpio
sudo python3 fade.py
#!/usr/bin/env python3
"""Respiration LED sur GPIO18 (PWM matérielle) — Model B+."""
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
p = GPIO.PWM(18, 200)                 # 200 Hz : inodore pour l'œil
p.start(0)
try:
    while True:
        up = range(0, 101, 5)         # rampe montante
        down = range(95, -1, -5)      # rampe descendante
        for dc in list(up) + list(down):
            p.ChangeDutyCycle(dc)     # 0 % = éteinte, 100 % = pleine
            time.sleep(0.05)
finally:
    p.stop
    GPIO.cleanup

Vérification attendue

La LED monte puis descend en luminosité en boucle, sans scintillement perceptible. Un oscilloscope sur GPIO18 montre un carré à 200 Hz dont le rapport cyclique évolue. Ctrl+C arrête proprement le programme.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels