neopixel — sterowanie diodami LED WS2812 / NeoPixel

Ten moduł udostępnia sterownik dla taśm LED WS2812 / NeoPixel. Sterownik korzysta z machine.bitstream() do generowania precyzyjnie taktowanego sygnału oczekiwanego przez diody, dzięki czemu działa na każdym porcie, którego moduł machine implementuje bitstream.

Aplikacja ustawia dane pikseli poprzez przypisanie elementu lub NeoPixel.fill(), a następnie wywołuje NeoPixel.write(), aby zaktualizować taśmę. Każdy piksel jest reprezentowany jako krotka RGB lub RGBW w kolejności akceptowanej przez użytkownika; sterownik obsługuje wewnętrznie kolejność przewodową GRB(W).

Przykład:

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)

Tworzy obiekt NeoPixel dla taśmy diod LED podłączonej do pin.

  • pin to instancja machine.Pin; konstruktor przekonfiguruje go jako wyjście.

  • n to liczba diod LED w taśmie.

  • bpp to liczba bajtów na piksel: 3 dla diod RGB (takich jak WS2812) i 4 dla diod RGBW (takich jak SK6812-RGBW).

  • timing wybiera taktowanie bitów. 0 wybiera wolne taktowanie 400 kHz, 1 wybiera standardowe taktowanie 800 kHz używane przez większość nowoczesnych taśm. Zamiast tego można przekazać 4-elementową krotkę (high_0, low_0, high_1, low_1) z czasami trwania w nanosekundach, w formie akceptowanej przez machine.bitstream().

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

Atrybut klasy odwzorowujący kolejność kanałów widoczną dla użytkownika na kolejność przewodową. Domyślnie (1, 0, 2, 3), tzn. dostarczane przez użytkownika krotki (R, G, B[, W]) są przesyłane jako G R B [W]. Podklasy mogą nadpisać ORDER, aby obsługiwać taśmy o innej kolejności przewodowej.

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

Ustawia każdy piksel w taśmie na pixel, krotkę RGB lub RGBW liczb całkowitych z zakresu 0-255.

__len__() int

Zwraca liczbę diod LED w taśmie.

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

Ustawia piksel o indeksie index na val, krotkę RGB lub RGBW. Dane są jedynie buforowane; wywołaj write(), aby przesłać je do taśmy.

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

Zwraca piksel o indeksie index z lokalnego bufora jako krotkę RGB lub RGBW w kolejności kanałów widocznej dla użytkownika.

write() None

Przesyła zbuforowane dane pikseli do taśmy za pomocą machine.bitstream().