neopixel — Ansteuerung von WS2812 / NeoPixel LEDs¶
Dieses Modul stellt einen Treiber für WS2812 / NeoPixel LED-Streifen bereit. Der Treiber stützt sich auf machine.bitstream(), um das präzise getaktete Signal zu erzeugen, das die LEDs erwarten, sodass er auf jedem Port funktioniert, dessen machine-Modul bitstream implementiert.
Die Anwendung legt Pixeldaten über Item-Zuweisung oder NeoPixel.fill() fest und ruft dann NeoPixel.write() auf, um den Streifen zu aktualisieren. Jedes Pixel wird als RGB- oder RGBW-Tupel in der vom Benutzer akzeptierten Reihenfolge bereitgestellt; der Treiber kümmert sich intern um die GRB(W)-Übertragungsreihenfolge.
Beispiel:
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)¶
Erzeugt ein
NeoPixel-Objekt für einen LED-Streifen, der mit pin verbunden ist.pin ist eine
machine.Pin-Instanz; sie wird vom Konstruktor als Ausgang neu konfiguriert.n ist die Anzahl der LEDs im Streifen.
bpp ist die Anzahl der Bytes pro Pixel:
3für RGB-LEDs (wie WS2812) und4für RGBW-LEDs (wie SK6812-RGBW).timing wählt das Bit-Timing aus.
0wählt das langsame 400-kHz-Timing,1wählt das von den meisten modernen Streifen verwendete Standard-800-kHz-Timing. Stattdessen kann auch ein 4-Tupel(high_0, low_0, high_1, low_1)von Nanosekunden-Dauern übergeben werden, in der vonmachine.bitstream()akzeptierten Form.
- ORDER: tuple[int, int, int, int]¶
Klassenattribut, das die benutzerseitige Kanalreihenfolge auf die Übertragungsreihenfolge abbildet. Standardwert ist
(1, 0, 2, 3), d.h. vom Benutzer angegebene(R, G, B[, W])-Tupel werden alsG R B [W]übertragen. Unterklassen könnenORDERüberschreiben, um Streifen mit einer anderen Übertragungsreihenfolge zu unterstützen.
- fill(pixel: tuple[int, ...]) None¶
Setzt jedes Pixel im Streifen auf pixel, ein RGB- oder RGBW-Tupel von Ganzzahlen im Bereich
0-255.
- __setitem__(index: int, val: tuple[int, ...]) None¶
Setzt das Pixel an index auf val, ein RGB- oder RGBW-Tupel. Die Daten werden nur gepuffert; rufen Sie
write()auf, um sie an den Streifen zu übertragen.
- __getitem__(index: int) tuple[int, ...]¶
Gibt das Pixel an index aus dem lokalen Puffer als RGB- oder RGBW-Tupel in der benutzerseitigen Kanalreihenfolge zurück.
- write() None¶
Überträgt die gepufferten Pixeldaten mithilfe von
machine.bitstream()an den Streifen.