🛠 Variation d'intensité LED avec le PWM matériel (et son piège)

Raspberry Pi Model B (Rev 1, 2012) — Ficha de placa · intermediaire · Schéma : IMG-model-b-rev1-intermediaire-1-modelb1-pwm-led.svg — LED sur GPIO18 (broche 12), unique sortie PWM matérielle du BCM2835, signal carré animé montrant le rapport cyclaire variable

Objetivos

Hacer variar la intensidad de un LED con la modulación de ancho de pulso (PWM). La trampa principal del BCM2835: una sola salida PWM por hardware, en GPIO18 (pin físico 12). Si otro uso (sonido, otro motor) reclama este canal, todo lo demás debe pasar por PWM por software, menos preciso. Este tutorial muestra el enfoque con RPi.GPIO e ilustra la restricción.

Material

Código completo

#!/usr/bin/env python3
"""Respiration LED sur GPIO18 - PWM materiel UNIQUE du BCM2835."""
import RPi.GPIO as GPIO
import time

LED = 18  # SEULE broche PWM materielle du Model B Rev 1 (broche 12)
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

p = GPIO.PWM(LED, 100)     # frequence 100 Hz
p.start(0)
try:
    while True:            # montee puis descente du rapport cyclique
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.05)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.05)
except KeyboardInterrupt:
    pass
finally:
    p.stop
    GPIO.cleanup

Verificación esperada

El LED «respira»: la intensidad sube y baja en bucle. Verifique con cat /sys/kernel/debug/pwm (si está disponible) que el canal PWM por hardware está correctamente reclamado. Pruebe la trampa: lance un segundo script PWM en GPIO18; el segundo fallará o recuperará el único canal.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales