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 Raspberry Pi Pico 2 (RP2350 doble Cortex-M33 @ 150 MHz) con MicroPython instalado, alimentada por USB. 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
Instala la versión MicroPython « Pico 2 » (mantén BOOTSEL, conecta el USB, suelta el .uf2) y copia el script vía Thonny. Arranque automático con el nombre main.py.
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.