neopixel — contrôle des LED WS2812 / NeoPixel¶
Ce module fournit un pilote pour les bandeaux de LED WS2812 / NeoPixel. Le pilote s’appuie sur machine.bitstream() pour générer le signal au timing précis attendu par les LED, de sorte qu’il fonctionne sur tout port dont le module machine implémente bitstream.
L’application définit les données de pixels par affectation d’éléments ou via NeoPixel.fill(), puis appelle NeoPixel.write() pour mettre à jour le bandeau. Chaque pixel est exposé sous forme de tuple RGB ou RGBW dans l’ordre accepté par l’utilisateur ; le pilote gère l’ordre de transmission GRB(W) en interne.
Exemple
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)¶
Construit un objet
NeoPixelpour un bandeau de LED connecté à pin.pin est une instance de
machine.Pin; elle sera reconfigurée en sortie par le constructeur.n est le nombre de LED dans le bandeau.
bpp est le nombre d’octets par pixel :
3pour les LED RGB (telles que WS2812) et4pour les LED RGBW (telles que SK6812-RGBW).timing sélectionne le timing des bits.
0sélectionne le timing lent à 400 kHz,1sélectionne le timing standard à 800 kHz utilisé par la plupart des bandeaux modernes. Un 4-tuple(high_0, low_0, high_1, low_1)de durées en nanosecondes peut être passé à la place, sous la forme acceptée parmachine.bitstream().
- ORDER: tuple[int, int, int, int]¶
Attribut de classe qui associe l’ordre des canaux côté utilisateur à l’ordre de transmission. Vaut par défaut
(1, 0, 2, 3), c.-à-d. que les tuples(R, G, B[, W])fournis par l’utilisateur sont transmis sous la formeG R B [W]. Les sous-classes peuvent redéfinirORDERpour prendre en charge des bandeaux avec un ordre de transmission différent.
- fill(pixel: tuple[int, ...]) None¶
Définit chaque pixel du bandeau à pixel, un tuple RGB ou RGBW d’entiers compris dans la plage
0-255.
- __setitem__(index: int, val: tuple[int, ...]) None¶
Définit le pixel à index sur val, un tuple RGB ou RGBW. Les données sont seulement mises en tampon ; appelez
write()pour les envoyer au bandeau.
- __getitem__(index: int) tuple[int, ...]¶
Renvoie le pixel situé à index depuis le tampon local sous forme de tuple RGB ou RGBW dans l’ordre des canaux côté utilisateur.
- write() None¶
Transmet les données de pixels mises en tampon au bandeau à l’aide de
machine.bitstream().