neopixel — aansturing van WS2812 / NeoPixel LED’s

Deze module biedt een driver voor WS2812 / NeoPixel LED-strips. De driver vertrouwt op machine.bitstream() om het nauwkeurig getimede signaal te genereren dat de LED’s verwachten, zodat het werkt op elke port waarvan de machine-module bitstream implementeert.

De applicatie stelt pixelgegevens in via item-toewijzing of NeoPixel.fill() en roept vervolgens NeoPixel.write() aan om de strip bij te werken. Elke pixel wordt blootgesteld als een RGB- of RGBW-tuple in de volgorde die door de gebruiker wordt geaccepteerd; de driver verwerkt de GRB(W)-draadvolgorde intern.

Voorbeeld:

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)

Construeert een NeoPixel-object voor een strip van LED’s die op pin is aangesloten.

  • pin is een machine.Pin-instantie; deze wordt door de constructor opnieuw geconfigureerd als uitgang.

  • n is het aantal LED’s in de strip.

  • bpp is het aantal bytes per pixel: 3 voor RGB-LED’s (zoals WS2812) en 4 voor RGBW-LED’s (zoals SK6812-RGBW).

  • timing selecteert de bittiming. 0 selecteert de langzame 400 kHz-timing, 1 selecteert de standaard 800 kHz-timing die door de meeste moderne strips wordt gebruikt. In plaats daarvan kan een 4-tuple (high_0, low_0, high_1, low_1) van nanoseconde-duren worden doorgegeven, in de vorm die door machine.bitstream() wordt geaccepteerd.

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

Klasse-attribuut dat de kanaalvolgorde voor de gebruiker toewijst aan de draadvolgorde. Standaard (1, 0, 2, 3), d.w.z. door de gebruiker opgegeven (R, G, B[, W])-tuples worden verzonden als G R B [W]. Subklassen kunnen ORDER overschrijven om strips met een andere draadvolgorde te ondersteunen.

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

Stelt elke pixel in de strip in op pixel, een RGB- of RGBW-tuple van gehele getallen in het bereik 0-255.

__len__() int

Geeft het aantal LED’s in de strip terug.

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

Stelt de pixel op index in op val, een RGB- of RGBW-tuple. De gegevens worden alleen gebufferd; roep write() aan om ze naar de strip te sturen.

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

Geeft de pixel op index uit de lokale buffer terug als een RGB- of RGBW-tuple in de kanaalvolgorde voor de gebruiker.

write() None

Verzendt de gebufferde pixelgegevens naar de strip met behulp van machine.bitstream().