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 цілих чисел у діапазоні 0255.

__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().