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

RP2040 (carte / puce générique) · 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

Objectifs

Les cartes RP2040 « génériques » (Waveshare RP2040 Zero, Adafruit Feather/QT Py RP2040, SparkFun Micro RP2040…) n'ont souvent pas de LED simple comme la Pico : elles embarquent une LED adressable WS2812 (« NeoPixel ») pilotée par un protocole mono-fil à 800 kHz que MicroPython génère via les PIO du RP2040. À la fin de ce tutoriel, tu sauras retrouver la broche de la LED de TA carte et lui donner n'importe quelle couleur.

Matériel

Code complet

# 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)

Vérification attendue

La LED passe en rouge, vert, bleu, orange à 500 ms, puis dégradé continu. Contrairement à une LED classique, rien ne clignote « éteint » entre deux couleurs : la LED garde sa dernière trame, car le WS2812 mémorise sa consigne. Si ta carte a plusieurs WS2812 (certains badges, QT Py avec strobe), passe la longueur réelle à NeoPixel(..., n).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels