neopixel — управление светодиодами WS2812 / NeoPixel

Этот модуль предоставляет драйвер для светодиодных лент WS2812 / NeoPixel. Драйвер использует machine.bitstream() для формирования сигнала с точной временной диаграммой, который ожидают светодиоды, поэтому он работает на любом порте, чей модуль machine реализует bitstream.

Приложение задаёт данные пикселей через присваивание элементам или с помощью NeoPixel.fill(), а затем вызывает NeoPixel.write(), чтобы обновить ленту. Каждый пиксель представлен в виде кортежа RGB или RGBW в порядке, принятом пользователем; драйвер внутренне обрабатывает порядок передачи по проводам GRB(W).

Пример:

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)

Создаёт объект NeoPixel для ленты светодиодов, подключённой к pin.

  • pin — это экземпляр machine.Pin; конструктор переконфигурирует его как выход.

  • n — это количество светодиодов в ленте.

  • bpp — это количество байтов на пиксель: 3 для светодиодов RGB (таких как WS2812) и 4 для светодиодов RGBW (таких как SK6812-RGBW).

  • timing выбирает временную диаграмму битов. 0 выбирает медленную диаграмму 400 кГц, 1 выбирает стандартную диаграмму 800 кГц, используемую большинством современных лент. Вместо этого может быть передан кортеж из 4 элементов (high_0, low_0, high_1, low_1) с длительностями в наносекундах в форме, принимаемой machine.bitstream().

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

Атрибут класса, который сопоставляет порядок каналов, видимый пользователю, с порядком передачи по проводам. По умолчанию (1, 0, 2, 3), т.е. предоставленные пользователем кортежи (R, G, B[, W]) передаются как G R B [W]. Подклассы могут переопределить ORDER для поддержки лент с другим порядком передачи по проводам.

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

Устанавливает каждый пиксель в ленте равным pixel — кортежу RGB или RGBW из целых чисел в диапазоне 0-255.

__len__() int

Возвращает количество светодиодов в ленте.

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

Устанавливает пиксель с индексом index в значение val — кортеж RGB или RGBW. Данные только буферизуются; вызовите write(), чтобы передать их в ленту.

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

Возвращает пиксель с индексом index из локального буфера в виде кортежа RGB или RGBW в порядке каналов, видимом пользователю.

write() None

Передаёт буферизованные данные пикселей в ленту с помощью machine.bitstream().