neopixel — controle de LEDs WS2812 / NeoPixel

Este módulo fornece um driver para fitas de LED WS2812 / NeoPixel. O driver depende de machine.bitstream() para gerar o sinal precisamente temporizado que os LEDs esperam, portanto funciona em qualquer porta cujo módulo machine implemente bitstream.

A aplicação define os dados dos pixels por atribuição de itens ou com NeoPixel.fill() e então chama NeoPixel.write() para atualizar a fita. Cada pixel é exposto como uma tupla RGB ou RGBW na ordem aceita pelo usuário; o driver trata internamente da ordem GRB(W) na transmissão.

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 NeoPixel para uma fita de LEDs conectada a pin.

  • pin é uma instância de machine.Pin; ela será reconfigurada como saída pelo construtor.

  • n é o número de LEDs na fita.

  • bpp é o número de bytes por pixel: 3 para LEDs RGB (como o WS2812) e 4 para LEDs RGBW (como o SK6812-RGBW).

  • timing seleciona a temporização dos bits. 0 seleciona a temporização lenta de 400 kHz, 1 seleciona a temporização padrão de 800 kHz usada pela maioria das fitas modernas. Uma 4-tupla (high_0, low_0, high_1, low_1) de durações em nanossegundos pode ser passada em seu lugar, no formato aceito por machine.bitstream().

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

Atributo de classe que mapeia a ordem de canais voltada ao usuário para a ordem de transmissão. Por padrão é (1, 0, 2, 3), ou seja, tuplas (R, G, B[, W]) fornecidas pelo usuário são transmitidas como G R B [W]. Subclasses podem sobrescrever ORDER para suportar fitas com uma ordem de transmissão diferente.

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

Define cada pixel da fita como pixel, uma tupla RGB ou RGBW de inteiros na faixa de 0 a 255.

__len__() int

Retorna o número de LEDs na fita.

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

Define o pixel em index como val, uma tupla RGB ou RGBW. Os dados são apenas armazenados em buffer; chame write() para enviá-los à fita.

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

Retorna o pixel em index a partir do buffer local como uma tupla RGB ou RGBW na ordem de canais voltada ao usuário.

write() None

Transmite os dados de pixel armazenados em buffer para a fita usando machine.bitstream().