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 NeoPixel pentru 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: 3 pentru LED-uri RGB (cum ar fi WS2812) și 4 pentru LED-uri RGBW (cum ar fi SK6812-RGBW).

  • timing selectează temporizarea biților. 0 selectează temporizarea lentă de 400 kHz, 1 selectează 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ă de machine.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 ca G R B [W]. Subclasele pot suprascrie ORDER pentru 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.

__len__() int#

Returnează numărul de LED-uri din bandă.

__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().