🛠 Variation d'intensité d'une LED en PWM

Raspberry Pi Model B Revision 2 (2012) — Fiche carte · intermediaire · Schéma : IMG-model-b-rev2-intermediaire-1-modelb2-pwm-led.svg — LED sur GPIO18 (broche PWM matériel du BCM2835) avec résistance, fondu lumineux en dégradé autour de la broche

Objetivos

Hacer variar la intensidad de un LED mediante PWM en el Model B Rev 2: el GPIO18 (P1-12) es el pin PWM por hardware del BCM2835; aquí utilizaremos el objeto PWM de RPi.GPIO para un fundido progresivo.

Material

Código completo

#!/usr/bin/env python
# fondu.py - balayage PWM sur GPIO18 (broche PWM materielle du BCM2835)
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
p = GPIO.PWM(18, 1000)        # 1 kHz
p.start(0)
try:
    while True:
        for duty in list(range(0, 101, 5)) + list(range(95, -5, -5)):
            p.ChangeDutyCycle(duty)   # variation du rapport cyclique
            time.sleep(0.02)
except KeyboardInterrupt:
    pass
finally:
    p.stop
    GPIO.cleanup

Verificación esperada

El LED sube y baja de luminosidad en bucle (fundido tipo «respiración»). Al detenerse (Ctrl-C), se apaga completamente. Un osciloscopio en GPIO18 mostraría una señal rectangular a 1 kHz cuyo ciclo de trabajo evoluciona.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales