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: 3 für RGB-LEDs (wie WS2812) und 4 für RGBW-LEDs (wie SK6812-RGBW).

  • timing wählt das Bit-Timing aus. 0 wählt das langsame 400-kHz-Timing, 1 wä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 von machine.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 als G R B [W] übertragen. Unterklassen können ORDER ü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.

__len__() int

Gibt die Anzahl der LEDs im Streifen zurück.

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