neopixel — controlo de LEDs WS2812 / NeoPixel¶
Este módulo fornece um controlador para tiras de LEDs WS2812 / NeoPixel. O controlador baseia-se em machine.bitstream() para gerar o sinal com temporização precisa que os LEDs necessitam, pelo que funciona em qualquer porta cujo módulo machine implemente bitstream.
A aplicação define os dados dos pixels através de atribuição por índice ou de NeoPixel.fill(), e depois chama NeoPixel.write() para atualizar a tira. Cada pixel é exposto como um tuplo RGB ou RGBW na ordem aceite pelo utilizador; o controlador trata internamente da ordem dos fios GRB(W).
Exemplo:
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)¶
Constrói um objeto
NeoPixelpara uma tira de LEDs ligada a pin.pin é uma instância de
machine.Pin; será reconfigurado como saída pelo construtor.n é o número de LEDs na tira.
bpp é o número de bytes por pixel:
3para LEDs RGB (como o WS2812) e4para LEDs RGBW (como o SK6812-RGBW).timing seleciona a temporização dos bits.
0seleciona a temporização lenta de 400 kHz,1seleciona a temporização padrão de 800 kHz usada pela maioria das tiras modernas. Em alternativa, pode ser passado um tuplo de 4 elementos(high_0, low_0, high_1, low_1)de durações em nanossegundos, no formato aceite pormachine.bitstream().
- ORDER: tuple[int, int, int, int]¶
Atributo de classe que mapeia a ordem de canais visível ao utilizador para a ordem dos fios. Por omissão é
(1, 0, 2, 3), ou seja, os tuplos(R, G, B[, W])fornecidos pelo utilizador são transmitidos comoG R B [W]. As subclasses podem sobreporORDERpara suportar tiras com uma ordem de fios diferente.
- fill(pixel: tuple[int, ...]) None¶
Define todos os pixels da tira como pixel, um tuplo RGB ou RGBW de inteiros no intervalo
0-255.
- __setitem__(index: int, val: tuple[int, ...]) None¶
Define o pixel no index para val, um tuplo RGB ou RGBW. Os dados ficam apenas em buffer; chame
write()para os enviar para a tira.
- __getitem__(index: int) tuple[int, ...]¶
Devolve o pixel no index a partir do buffer local como um tuplo RGB ou RGBW na ordem de canais visível ao utilizador.
- write() None¶
Transmite os dados de pixels em buffer para a tira usando
machine.bitstream().