Neopixel
Этот модуль содержит функции для работы со светодиодами, подключенными к однопроводной шине, такими как светодиод WS2812B. Каждый светодиод в шине известен как пиксель.
Основным ограничивающим фактором для количества пикселей, которые вы можете управлять с помощью этого модуля, является объем памяти на вашей плате. С 1 Кб памяти вы можете управлять до 128 пикселями.
instance = neopixel.attach(type, gpio, pixels)
Подключить NEOPIXEL к GPIO. Яркость устанавливается на уровне 20%.
Аргументы:
- type (тип): тип светодиода, который вы подключили к шине. На данный момент поддерживается только neopixel.WS2812B.
- gpio: GPIO для управления шиной. Используйте любое из значений pio.GPIOx, определенных в модуле pio, для этого.
- pixels (пиксели): количество пикселей (светодиодов), подключенных к шине.
Возвращает: экземпляр шины NEOPIXEL или исключение. Этот экземпляр необходимо сохранить в переменной для дальнейших операций с ним.
-- Attch a NEOPIXEL bus formed by 6 WS2812B leds, connected to GPIO14
neo = neopixel.attach(neopixel.WS2812B, pio.GPIO14, 6)
instance:setBrightness(brightness)
Установить яркость.
Аргументы:
- brightness (яркость): значение яркости, число между 0 и 1, которое внутренне используется для установки яркости пикселей, окторый будут отрисованы следом.
Возвращает: ничего или исключение.
instance:fade(brightness, upd_opt)
Установить яркость всей ленты.
Аргументы:
- brightness (яркость): значение яркости, число между 0 и 1, которое внутренне используется для установки яркости пикселей.
- upd_opt: отобразить сразу.
Возвращает: ничего или исключение.
instance:setPixel(pixel, red, green, blue, upd_opt)
Установить цвет пикселя, выраженный в его r/g/b компонентах. Эта функция только обновляет внутренний буфер пикселей, но ничего не передает по шине. Вы должны вызвать функцию обновления, чтобы обновить светодиоды, подключенные к шине.
Аргументы:
- pixel: номер пикселя.
- red (красный): компонент красного цвета, от 0 до 255.
- green (зеленый): компонент зеленого цвета, от 0 до 255.
- blue (синий): компонент синего цвета, от 0 до 255.
- upd_opt: отобразить сразу.
Возвращает: ничего или исключение.
-- Setup a NEOPIXEL bus formed by 6 WS2812B leds, connected to GPIO14
neo = neopixel.attach(neopixel.WS2812B, pio.GPIO14, 6)
-- Set color for pixel 0 (pure red)
neo:setPixel(0, 255, 0, 0)
-- Set color for pixel 1 (pure green)
neo:setPixel(1, 0, 255, 0)
-- Set color for pixel 2 (pure white)
neo:setPixel(2, 255, 255, 255)
instance:fill(begin, end, r, g, b, upd_opt)
Заполнить сектор ленты заданным цветом.
Аргументы:
- begin: номер начального пикселя.
- end: номер конечного пикселя.
- red (красный): компонент красного цвета, от 0 до 255.
- green (зеленый): компонент зеленого цвета, от 0 до 255.
- blue (синий): компонент синего цвета, от 0 до 255.
- upd_opt: отобразить сразу.
Возвращает: ничего или исключение.
instance:shift(dir, upd_opt)
Сдвинуть ленту на один пиксель.
Аргументы:
- dir: направление свдига. true - вперед.
- upd_opt: отобразить сразу.
Возвращает: ничего или исключение.
instance:shift(dir, upd_opt)
Сдвинуть ленту на один пиксель.
Аргументы:
- dir: направление свдига. true - вперед.
- upd_opt: отобразить сразу.
Возвращает: ничего или исключение.
instance:gradient(begin, end, upt_opt)
Отобразить градиент цветов на заданном секторе.
Аргументы:
- begin: номер начального пикселя.
- end: номер конечного пикселя.
- upd_opt: отобразить сразу.
Возвращает: ничего или исключение.
r,g,b = hsvToRgb(h, s, v)
Преобразование цветов из hsv в компоненты r,g,b.
Аргументы:
- h: Hue (Оттенок) 0-359
- s: Saturation (Насыщенность) 0-1
- v: Value (Яркость) 0-1
Возвращает:
- red (красный): компонент красного цвета, от 0 до 255.
- green (зеленый): компонент зеленого цвета, от 0 до 255.
- blue (синий): компонент синего цвета, от 0 до 255.
instance:update()
Обновить светодиоды, подключенные к шине.
Аргументы: нет.
Возвращает: ничего или исключение.
-- Setup a NEOPIXEL bus formed by 6 WS2812B leds, connected to GPIO14
neo = neopixel.attach(neopixel.WS2812B, pio.GPIO14, 6)
-- Set color for pixel 0 (pure red)
neo:setPixel(0, 255, 0, 0)
-- Set color for pixel 1 (pure green)
neo:setPixel(1, 0, 255, 0)
-- Set color for pixel 2 (pure white)
neo:setPixel(2, 255, 255, 255)
-- Update the bus
neo:update()
Пример
В этом примере пиксель перемещается справа налево и слева направо в шине на 6 пикселей.
thread.start(function()
neo = neopixel.attach(neopixel.WS2812B, pio.GPIO14, 6)
pixel = 0
direction = 0
while true do
neo:setPixel(pixel, 0, 255, 0)
neo:update()
tmr.delayms(100)
neo:setPixel(pixel, 0, 0, 0)
if (direction == 0) then
if (pixel == 5) then
direction = 1
pixel = 4
else
pixel = pixel + 1
end
else
if (pixel == 0) then
direction = 0
pixel = 1
else
pixel = pixel - 1
end
end
end
end)