neopixel — controllo di LED WS2812 / NeoPixel

Questo modulo fornisce un driver per le strisce di LED WS2812 / NeoPixel. Il driver si basa su machine.bitstream() per generare il segnale temporizzato con precisione che i LED si aspettano, quindi funziona su qualsiasi porta il cui modulo machine implementi bitstream.

L’applicazione imposta i dati dei pixel tramite assegnazione di elementi o NeoPixel.fill() e poi chiama NeoPixel.write() per aggiornare la striscia. Ogni pixel è esposto come una tupla RGB o RGBW nell’ordine accettato dall’utente; il driver gestisce internamente l’ordine di trasmissione GRB(W).

Esempio:

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)

Costruisce un oggetto NeoPixel per una striscia di LED collegata a pin.

  • pin è un’istanza di machine.Pin; verrà riconfigurato come uscita dal costruttore.

  • n è il numero di LED nella striscia.

  • bpp è il numero di byte per pixel: 3 per i LED RGB (come WS2812) e 4 per i LED RGBW (come SK6812-RGBW).

  • timing seleziona la temporizzazione dei bit. 0 seleziona la temporizzazione lenta a 400 kHz, 1 seleziona la temporizzazione standard a 800 kHz usata dalla maggior parte delle strisce moderne. In alternativa può essere passata una tupla di 4 elementi (high_0, low_0, high_1, low_1) di durate in nanosecondi, nella forma accettata da machine.bitstream().

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

Attributo di classe che mappa l’ordine dei canali rivolto all’utente sull’ordine di trasmissione. Il valore predefinito è (1, 0, 2, 3), ovvero le tuple (R, G, B[, W]) fornite dall’utente vengono trasmesse come G R B [W]. Le sottoclassi possono sovrascrivere ORDER per supportare strisce con un diverso ordine di trasmissione.

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

Imposta ogni pixel della striscia a pixel, una tupla RGB o RGBW di interi nell’intervallo 0-255.

__len__() int

Restituisce il numero di LED nella striscia.

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

Imposta il pixel all’indice index a val, una tupla RGB o RGBW. I dati vengono solo bufferizzati; chiama write() per inviarli alla striscia.

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

Restituisce il pixel all’indice index dal buffer locale come una tupla RGB o RGBW nell’ordine dei canali rivolto all’utente.

write() None

Trasmette i dati dei pixel bufferizzati alla striscia usando machine.bitstream().