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
NeoPixelpara 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:
3para LEDs RGB (como el WS2812) y4para LEDs RGBW (como el SK6812-RGBW).timing selecciona la temporización de los bits.
0selecciona la temporización lenta de 400 kHz,1selecciona 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 pormachine.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 comoG R B [W]. Las subclases pueden anularORDERpara 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.
- __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().