neopixel.py
Una cabeza blanca seguida de una estela roja recorre una tira de 12 NeoPixel (WS2812B), controlada nativamente por MicroPython con machine.NeoPixel. Cada LED recibe su color en una trama única enviada por write().
Hardware
Una placa genérica con microcontrolador RP2350 (doble Cortex-M33) programada en MicroPython. 1 tira/anillo de 12 LED NeoPixel (WS2812B); alimentación externa de 5 V recomendada.
Cableado
Data (DIN) a GP16 (resistencia de 330 Ω aconsejable), VCC a 5 V externo, GND unido a la placa.
Funcionamiento
ruban[i] = (R, G, B) escribe en el búfer; write() genera la secuencia única de impulsos que direcciona cada LED. El módulo % hace girar la cabeza en bucle.
Ejecución
Graba la versión MicroPython « RP2350 » vía BOOTSEL (.uf2) y copia el script en la unidad. El pin del LED de usuario varía según el fabricante: consulta la documentación de la placa.
Variantes
Usa varios objetos NeoPixel en pines distintos para dos tiras, o anima el color con un gradiente sinusoidal.
neopixel.py
# Animation sur ruban NeoPixel/WS2812 avec le module machine.NeoPixel.
from machine import NeoPixel, Pin
import time
NB_LED = 12
ruban = NeoPixel(Pin(16), NB_LED) # data sur GP16
tete = 0
while True:
# Eteindre tout puis dessiner la scene.
for i in range(NB_LED):
ruban[i] = (0, 0, 0)
ruban[tete] = (255, 255, 255) # tete blanche
ruban[(tete - 1) % NB_LED] = (200, 0, 0) # comete rouge
ruban[(tete - 2) % NB_LED] = (80, 0, 0) # trainee
ruban.write() # une trame vers les LED
tete = (tete + 1) % NB_LED
time.sleep_ms(80)
# Attention a l'intensite : 12 LED a 255 blanc tirent plus de
# 700 mA. Alimenter le ruban par une source 5 V externe separee.