Привет,
помогите бога ради, я новичок, может делаю что-то не так.
Написал скрипт на LUA для NodeMCU, который должен срабатывать на нажатие кнопки. Кнопка одним концом подключена к D3 пину. Другим концом подключена к 3.3V. Пин D3 притянут к земле через 10кОм сопротивление. По нажатию кнопки у меня переключается пин D1, к которому подключено реле и шлется сообщение в топик MQTT.
Вот код хендлера кнопки
Кажется ничего особенного. Если я все записываю в NodeMCU через ESPlorer и запускаю на исполнение, то все замечательно работает. Нажимаю кнопку, реле на пине D1 переключается, сообщение в Mqtt шлется.
Проблема начинается, когда я закрываю ESPlorer, выдергиваю шнурок из USB компьютера и снова его втыкаю в компьютер, в этот же USB разъем компьютера. То-есть NodeMCU запитанна от USB разъема компьютера, но связи по терминалу нету. Почему то gpio.trig срабатывает непрерывно. Реле переключается постоянно. В Mqtt непрерывно шлется то"on", то "off". Я там поставил задержку на 300 миллисекунд, потому все с такой частотой и мигает. Если зажать кнопку, то мигать перестает. Как только отпустил - светомузыка
*Если запущу ESPlorer и как только нажму кнопку [Open] для установки связи с нодой, как тут же все перестает мигать и работает, как и ожидается.*
Если я тот же USB проводок воткну в блок питания, то-есть NodeMCU запитанна от блока питания, а не от компьютера. То ничего такого нету, но и нода на кнопку не реагирует.
Померил прибором, на пине D3 0В, при нажатии кнопки там примерно 3.2В. От чего такая билеберда?
NodeMCU прошивку взял отсюда на днях.
NodeMCU custom builds
nodemcu-master-8-modules-2017-03-12-10-18-21-integer.bin
Спасибо
помогите бога ради, я новичок, может делаю что-то не так.
Написал скрипт на LUA для NodeMCU, который должен срабатывать на нажатие кнопки. Кнопка одним концом подключена к D3 пину. Другим концом подключена к 3.3V. Пин D3 притянут к земле через 10кОм сопротивление. По нажатию кнопки у меня переключается пин D1, к которому подключено реле и шлется сообщение в топик MQTT.
Вот код хендлера кнопки
Код:
gpio.mode(PIN_WRITE, gpio.OUTPUT)
gpio.mode(PIN_INPUT, gpio.INPUT)
print("blink")
changeState("on")
tmr.delay(500000)
changeState("off")
-- register callback for button
gpio.trig(PIN_INPUT, "down", function(level, when)
-- eliminate random presses
print("button pressed " .. when)
if(when > last_pressed + 300000) then
last_pressed = tmr.now()
switch()
end
end)
Проблема начинается, когда я закрываю ESPlorer, выдергиваю шнурок из USB компьютера и снова его втыкаю в компьютер, в этот же USB разъем компьютера. То-есть NodeMCU запитанна от USB разъема компьютера, но связи по терминалу нету. Почему то gpio.trig срабатывает непрерывно. Реле переключается постоянно. В Mqtt непрерывно шлется то"on", то "off". Я там поставил задержку на 300 миллисекунд, потому все с такой частотой и мигает. Если зажать кнопку, то мигать перестает. Как только отпустил - светомузыка
*Если запущу ESPlorer и как только нажму кнопку [Open] для установки связи с нодой, как тут же все перестает мигать и работает, как и ожидается.*
Если я тот же USB проводок воткну в блок питания, то-есть NodeMCU запитанна от блока питания, а не от компьютера. То ничего такого нету, но и нода на кнопку не реагирует.
Померил прибором, на пине D3 0В, при нажатии кнопки там примерно 3.2В. От чего такая билеберда?
NodeMCU прошивку взял отсюда на днях.
NodeMCU custom builds
nodemcu-master-8-modules-2017-03-12-10-18-21-integer.bin
Спасибо