neopixel — controlul LED-urilor WS2812 / NeoPixel¶
Acest modul oferă un driver pentru benzile de LED-uri WS2812 / NeoPixel. Driverul se bazează pe machine.bitstream() pentru a genera semnalul cu temporizare precisă pe care îl așteaptă LED-urile, astfel încât funcționează pe orice port al cărui modul machine implementează bitstream.
Aplicația setează datele pixelilor prin atribuire de elemente sau prin NeoPixel.fill() și apoi apelează NeoPixel.write() pentru a actualiza banda. Fiecare pixel este expus ca un tuplu RGB sau RGBW în ordinea acceptată de utilizator; driverul gestionează intern ordinea de transmitere GRB(W).
Exemplu:
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)¶
Construiește un obiect
NeoPixelpentru o bandă de LED-uri conectată la pin.pin este o instanță
machine.Pin; aceasta va fi reconfigurată ca ieșire de către constructor.n este numărul de LED-uri din bandă.
bpp este numărul de octeți per pixel:
3pentru LED-uri RGB (cum ar fi WS2812) și4pentru LED-uri RGBW (cum ar fi SK6812-RGBW).timing selectează temporizarea biților.
0selectează temporizarea lentă de 400 kHz,1selectează temporizarea standard de 800 kHz folosită de majoritatea benzilor moderne. În locul acesteia se poate transmite un tuplu de 4 elemente(high_0, low_0, high_1, low_1)cu durate exprimate în nanosecunde, în forma acceptată demachine.bitstream().
- ORDER: tuple[int, int, int, int]¶
Atribut de clasă care mapează ordinea canalelor vizibilă utilizatorului la ordinea de transmitere. Implicit este
(1, 0, 2, 3), adică tuplurile(R, G, B[, W])furnizate de utilizator sunt transmise caG R B [W]. Subclasele pot suprascrieORDERpentru a accepta benzi cu o ordine de transmitere diferită.
- fill(pixel: tuple[int, ...]) None¶
Setează fiecare pixel din bandă la pixel, un tuplu RGB sau RGBW de numere întregi în intervalul
0-255.
- __setitem__(index: int, val: tuple[int, ...]) None¶
Setează pixelul de la index la val, un tuplu RGB sau RGBW. Datele sunt doar stocate în tampon; apelați
write()pentru a le trimite către bandă.
- __getitem__(index: int) tuple[int, ...]¶
Returnează pixelul de la index din tamponul local ca un tuplu RGB sau RGBW în ordinea canalelor vizibilă utilizatorului.
- write() None¶
Transmite datele pixelilor stocate în tampon către bandă folosind
machine.bitstream().