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