neopixel — ovládání LED diod WS2812 / NeoPixel

Tento modul poskytuje ovladač pro LED pásky WS2812 / NeoPixel. Ovladač se spoléhá na machine.bitstream(), který generuje přesně časovaný signál, jenž LED diody očekávají, takže funguje na libovolném portu, jehož modul machine implementuje bitstream.

Aplikace nastavuje data pixelů přiřazením k položce nebo pomocí NeoPixel.fill() a poté volá NeoPixel.write() k aktualizaci pásku. Každý pixel je vystaven jako RGB nebo RGBW n-tice v pořadí přijatém uživatelem; ovladač interně řeší pořadí GRB(W) na vodičích.

Příklad:

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)

Vytvoří objekt NeoPixel pro pásek LED diod připojený k pinu pin.

  • pin je instance machine.Pin; konstruktor jej překonfiguruje jako výstup.

  • n je počet LED diod v pásku.

  • bpp je počet bajtů na pixel: 3 pro RGB LED diody (například WS2812) a 4 pro RGBW LED diody (například SK6812-RGBW).

  • timing volí časování bitů. 0 volí pomalé časování 400 kHz, 1 volí standardní časování 800 kHz používané většinou moderních pásků. Místo toho lze předat 4-tici (high_0, low_0, high_1, low_1) s dobami trvání v nanosekundách, ve formě přijímané funkcí machine.bitstream().

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

Atribut třídy, který mapuje uživatelské pořadí kanálů na pořadí na vodičích. Výchozí hodnota je (1, 0, 2, 3), tj. uživatelem zadané n-tice (R, G, B[, W]) jsou přenášeny jako G R B [W]. Podtřídy mohou ORDER přepsat, aby podporovaly pásky s odlišným pořadím na vodičích.

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

Nastaví každý pixel v pásku na pixel, což je RGB nebo RGBW n-tice celých čísel v rozsahu 0-255.

__len__() int

Vrátí počet LED diod v pásku.

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

Nastaví pixel na pozici index na hodnotu val, RGB nebo RGBW n-tici. Data jsou pouze ukládána do bufferu; pro jejich odeslání na pásek zavolejte write().

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

Vrátí pixel na pozici index z lokálního bufferu jako RGB nebo RGBW n-tici v uživatelském pořadí kanálů.

write() None

Přenese data pixelů z bufferu na pásek pomocí machine.bitstream().