neopixel — styrning av WS2812-/NeoPixel-lysdioder

Denna modul tillhandahåller en drivrutin för WS2812-/NeoPixel-LED-remsor. Drivrutinen förlitar sig på machine.bitstream() för att generera den exakt tidsstyrda signal som lysdioderna förväntar sig, så den fungerar på vilken port som helst vars machine-modul implementerar bitstream.

Applikationen anger pixeldata via tilldelning av enskilda element eller NeoPixel.fill() och anropar därefter NeoPixel.write() för att uppdatera remsan. Varje pixel exponeras som en RGB- eller RGBW-tupel i den ordning som användaren förväntar sig; drivrutinen hanterar internt GRB(W)-ordningen på ledningen.

Exempel:

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)

Konstruera ett NeoPixel-objekt för en remsa av lysdioder anslutna till pin.

  • pin är en machine.Pin-instans; den kommer att omkonfigureras som utgång av konstruktorn.

  • n är antalet lysdioder i remsan.

  • bpp är antalet byte per pixel: 3 för RGB-lysdioder (såsom WS2812) och 4 för RGBW-lysdioder (såsom SK6812-RGBW).

  • timing väljer bittidsstyrningen. 0 väljer den långsamma tidsstyrningen på 400 kHz, 1 väljer den vanliga tidsstyrningen på 800 kHz som de flesta moderna remsor använder. En 4-tupel (high_0, low_0, high_1, low_1) med varaktigheter i nanosekunder kan skickas i stället, i den form som accepteras av machine.bitstream().

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

Klassattribut som mappar den användarvända kanalordningen till ledningsordningen. Standardvärdet är (1, 0, 2, 3), dvs. användarangivna (R, G, B[, W])-tupler sänds som G R B [W]. Subklasser kan åsidosätta ORDER för att stödja remsor med en annan ledningsordning.

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

Sätt varje pixel i remsan till pixel, en RGB- eller RGBW-tupel av heltal i intervallet 0-255.

__len__() int

Returnera antalet lysdioder i remsan.

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

Sätt pixeln vid index till val, en RGB- eller RGBW-tupel. Datan buffras endast; anropa write() för att skicka den till remsan.

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

Returnera pixeln vid index från den lokala bufferten som en RGB- eller RGBW-tupel i den användarvända kanalordningen.

write() None

Sänd den buffrade pixeldatan till remsan med machine.bitstream().