neopixel — control de LEDs WS2812 / NeoPixel

Este módulo proporciona un controlador para tiras de LEDs WS2812 / NeoPixel. El controlador se apoya en machine.bitstream() para generar la señal con la temporización precisa que esperan los LEDs, por lo que funciona en cualquier puerto cuyo módulo machine implemente bitstream.

La aplicación establece los datos de los píxeles mediante asignación de elementos o con NeoPixel.fill() y luego llama a NeoPixel.write() para actualizar la tira. Cada píxel se expone como una tupla RGB o RGBW en el orden aceptado por el usuario; el controlador gestiona internamente el orden de cableado GRB(W).

Ejemplo:

import machine
import neopixel

# 32 LED strip connected to pin P7.
n = neopixel.NeoPixel(machine.Pin("P7"), 32)

# Draw a red gradient.
for i in range(32):
    n[i] = (i * 8, 0, 0)

# Update the strip.
n.write()

class NeoPixel

class neopixel.NeoPixel(pin: 'machine.Pin', n: int, bpp: int = 3, timing: int | tuple[int, int, int, int] = 1)

Construye un objeto NeoPixel para una tira de LEDs conectada a pin.

  • pin es una instancia de machine.Pin; el constructor la reconfigurará como salida.

  • n es el número de LEDs de la tira.

  • bpp es el número de bytes por píxel: 3 para LEDs RGB (como el WS2812) y 4 para LEDs RGBW (como el SK6812-RGBW).

  • timing selecciona la temporización de los bits. 0 selecciona la temporización lenta de 400 kHz, 1 selecciona la temporización estándar de 800 kHz que usan la mayoría de las tiras modernas. En su lugar puede pasarse una tupla de 4 elementos (high_0, low_0, high_1, low_1) con duraciones en nanosegundos, en la forma aceptada por machine.bitstream().

ORDER: tuple[int, int, int, int]

Atributo de clase que asigna el orden de canales orientado al usuario al orden de cableado. Por defecto es (1, 0, 2, 3), es decir, las tuplas (R, G, B[, W]) proporcionadas por el usuario se transmiten como G R B [W]. Las subclases pueden anular ORDER para admitir tiras con un orden de cableado diferente.

fill(pixel: tuple[int, ...]) None

Establece todos los píxeles de la tira a pixel, una tupla RGB o RGBW de enteros en el rango 0-255.

__len__() int

Devuelve el número de LEDs de la tira.

__setitem__(index: int, val: tuple[int, ...]) None

Establece el píxel en index a val, una tupla RGB o RGBW. Los datos solo se almacenan en búfer; llama a write() para enviarlos a la tira.

__getitem__(index: int) tuple[int, ...]

Devuelve el píxel en index del búfer local como una tupla RGB o RGBW en el orden de canales orientado al usuario.

write() None

Transmite los datos de píxeles almacenados en búfer a la tira usando machine.bitstream().