• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

NodeMCU + Lua + WS2812

vasai

New member
Добрый день. Я только недавно начал изучать, nodemcu и lua, поэтому заранее извиняюсь, если данный вопрос уже поднимался. Но поиском по форуму я эту тему найти не смог. Суть вопроса, необходимо сделать, чтоб диодная лента ws2812 длиной 60 светодиодов, загоралась постепенно по одному светодиоду с каждой стороны, т.е. каждый с края одновременно ,потом + 1 к центру.
В документации nodemcu есть примеры работы с лентой, но не совсем понятные, к примеру:
Код:
ws2812.init()
local i, buffer = 0, ws2812.newBuffer(60, 3); buffer:fill(0, 0, 0); tmr.alarm(0, 50, 1, function()
        i=i+1
        buffer:fade(2)
        buffer:set(i%buffer:size()+1, 0, 0, 255)
        ws2812.write(buffer)
end)
В данном примере, получается бегущий огонек, т.е. загораются по очереди, а предыдущий тухнет. Подскажите пожалуйста, какой параметр отвечает за это, чтоб предыдущий не затухал?
И как можно сделать одновременно с двух концов, если i=i+1 поменять на i=i-1, начнется бегущий огонек с конца ленты, подскажите как сделать одновременно, не могу понять логику
 

Юрий Ботов

Moderator
Команда форума
Никогда не работал с лентой, но могу предположить что
  • ws2812.init()
  • local i, buffer = 0, ws2812.newBuffer(60, 3); buffer:fill(0, 0, 0); tmr.alarm(0, 50, 1, function()
  • i=i+1
  • buffer:fade(2) -- это судя по названию отвечает за угасание после некой задержки
  • buffer:set(i%buffer:size()+1, 0, 0, 255)
    • buffer:set(i%buffer:size()-1, 0, 0, 255) -- а вот так можно зажечь лампочки с обеих сторон
  • ws2812.write(buffer)
  • end)
Вопрос что вы будете делать когда все зажглось? Дальше бесконечный цикл во включенном состоянии...
 

vasai

New member
Никогда не работал с лентой, но могу предположить что

Вопрос что вы будете делать когда все зажглось? Дальше бесконечный цикл во включенном состоянии...
Спасибо, Вы правы. Fade отвечает за затухание. А вот одновременное включение так тоже не работает
Код:
PANIC: unprotected error in call to Lua API (ws2812_test.lua:6: bad argument #1 to 'set' (index out of range))
Суть такая, одна функция отвечает за включение, другая за выключение. т.е. планируется отсылать команду, и будет выполняться конкретное действие.
 

vasai

New member
Помогите пожалуйста разобраться, так и не получается решить данную проблему
 
Сверху Снизу