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

Raspberry Pi 3 Model B+ (2018) — Ficha de placa · intermediaire · Schéma : IMG-model-3b-plus-intermediaire-1-model3bp-pwm-led.svg — LED sur GPIO18 (broche 12, PWM matériel) avec résistance, dégradé lumineux illustrant le rapport cyclique

Objetivos

Comprender la modulación de ancho de pulso (PWM): una salida digital solo genera 0 o 3,3 V, pero al conmutar muy rápidamente se modula la potencia media. Utilizarás el PWM por hardware del conector de 40 pines (GPIO18, pin 12) y un «LED respiratorio» en Python, y luego el PWM por hardware mediante pigpio en C.

Material

Código completo

#!/usr/bin/env python3
"""Respiration LED sur GPIO18 (broche PWM matérielle)."""
from gpiozero import PWMLED
from time import sleep

led = PWMLED(18)          # PWM : valeur de 0.0 (éteinte) à 1.0 (pleine)
while True:
    for pas in range(0, 101, 2):      # montée 0 -> 100 %
        led.value = pas / 100.0
        sleep(0.02)
    for pas in range(100, -1, -2):    # descente 100 -> 0 %
        led.value = pas / 100.0
        sleep(0.02)
/* Version PWM matérielle : gcc servo.c -o servo -lpigpio (pigpiod lancé).
   50 Hz, impulsions 1-2 ms : la même mécanique pilote un servomoteur. */
#include <pigpio.h>
#include <stdio.h>

int main(void) {
    if (gpioInitial < 0) { fprintf(stderr, "demarrer pigpiod d'abord\n"); return 1; }
    int pulse_us = 1000, dir = 20;
    for (int i = 0; i < 250; i++) {
        gpioHardwarePWM(18, 20000, pulse_us * 10); /* 50 Hz, pulse en 0,1 us */
        if (pulse_us <= 1000 || pulse_us >= 2000) dir = -dir;
        pulse_us += dir;
        timeSleep(20000);
    }
    gpioHardwarePWM(18, 0, 0);   /* couper le PWM avant de sortir */
    gpioTerminate;
    return 0;
}

Verificación esperada

El LED sube y baja de luminosidad de forma continua («respiración» de aproximadamente 2 s por ciclo) sin escalonamiento visible. Con la versión en C, el osciloscopio lógico (o una aplicación para smartphone) muestra una señal rectangular de 50 Hz cuyo ancho varía entre 1 y 2 ms. pigs rgr 18 muestra la configuración PWM activa.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales