🛠 Piloter la LED RGB embarquée WS2812 d'une carte RP2040 générique

RP2040 (placa genérica / chip) · debutant · Schéma : IMG-rp2040-generic-debutant-1-rp2040-neopixel-ws2812.svg — carte RP2040 générique type Waveshare Zero avec sa LED WS2812 sur GP16 mise en évidence, câble USB-C branché, puce PIO représentée générant le signal

Objetivos

Las tarjetas RP2040 «genéricas» (Waveshare RP2040 Zero, Adafruit Feather/QT Py RP2040, SparkFun Micro RP2040…) a menudo no tienen un LED simple como la Pico: incorporan un LED direccionable WS2812 («NeoPixel») controlado mediante un protocolo de un solo hilo a 800 kHz que MicroPython genera a través de los PIO del RP2040. Al final de este tutorial, sabrás encontrar el pin del LED de TU tarjeta y darle cualquier color.

Material

Código completo

# main.py — LED WS2812 embarquée (GP16 Waveshare Zero, GP17 Feather)
import neopixel
from machine import Pin
import time

PIN = 16                      # à adapter à ta carte !
led = neopixel.NeoPixel(Pin(PIN), 1)   # chaîne d'une seule LED

for r, g, b in [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 64, 0)]:
    led[0] = (r, g, b)        # tuple (R, G, B) 0..255
    led.write               # la PIO envoie la trame, le CPU est libre
    time.sleep_ms(500)

while True:                   # « arc-en-ciel » rapide
    for i in range(256):
        led[0] = (i, 255 - i, 128)
        led.write
        time.sleep_ms(5)

Verificación esperada

El LED pasa a rojo, verde, azul, naranja cada 500 ms, luego un degradado continuo. A diferencia de un LED clásico, nada parpadea «apagado» entre dos colores: el LED mantiene su última trama, porque el WS2812 memoriza su consigna. Si tu tarjeta tiene varios WS2812 (algunos badges, QT Py con strobe), pasa la longitud real a NeoPixel(..., n).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales