neopixel.py

Raspberry Pi Pico 2 W · Archivo : neopixel.py · Lenguaje : Python · Uso : Animation de type « tête qui avance » sur ruban NeoPixel

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 W (RP2350 + radio Wi-Fi de 2,4 GHz) 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 W » (BOOTSEL + .uf2) y copia el script vía Thonny. Como en la Pico W, el LED de usuario no está en un GPIO: usa un LED externo para las salidas.

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.

← Volver a la ficha