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.
- __setitem__(index: int, val: tuple[int, ...]) None¶
Устанавливает пиксель с индексом index в значение val — кортеж RGB или RGBW. Данные только буферизуются; вызовите
write(), чтобы передать их в ленту.
- __getitem__(index: int) tuple[int, ...]¶
Возвращает пиксель с индексом index из локального буфера в виде кортежа RGB или RGBW в порядке каналов, видимом пользователю.
- write() None¶
Передаёт буферизованные данные пикселей в ленту с помощью
machine.bitstream().