• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Зациклил esp

gaterkik

New member
Добрый день.
Есть esp-12f. Прошита nodemcu. На ней запущен по неопытности такой код:
Код:
--Set Pin mode
i = 1
in1 = 1
in2 = 2
out1 = 3
out2 = 4

gpio.mode(in1, gpio.INPUT)
gpio.mode(in2, gpio.INPUT)
gpio.mode(out1, gpio.OUTPUT)
gpio.mode(out2, gpio.OUTPUT)

while i > 0 do
in1_state = gpio.read(in1)
print(in1_state)
tmr.delay(1000)
end
В правом окне Esplorer вижу как очень быстро пробегают нули и еденицы - состояние входа один. Затем esp перезагружается и все повторяется.

Два вопроса:
1. Почему не работает tmr.delay(1000)? Состояние входа обновляется чрезмерно часто в консоли.
2. Как вывести esp из этого состояния? Не реагирует на запись правленого скрипта.
 

nikolz

Well-known member
Добрый день.
Есть esp-12f. Прошита nodemcu. На ней запущен по неопытности такой код:
Код:
--Set Pin mode
i = 1
in1 = 1
in2 = 2
out1 = 3
out2 = 4

gpio.mode(in1, gpio.INPUT)
gpio.mode(in2, gpio.INPUT)
gpio.mode(out1, gpio.OUTPUT)
gpio.mode(out2, gpio.OUTPUT)

while i > 0 do
in1_state = gpio.read(in1)
print(in1_state)
tmr.delay(1000)
end
В правом окне Esplorer вижу как очень быстро пробегают нули и еденицы - состояние входа один. Затем esp перезагружается и все повторяется.

Два вопроса:
1. Почему не работает tmr.delay(1000)? Состояние входа обновляется чрезмерно часто в консоли.
2. Как вывести esp из этого состояния? Не реагирует на запись правленого скрипта.
у вас бесконечный цикл i всегда 1
-----------------------
возьмите загрузчик от разработчика ESP и загрузите кусок любой прошивки
либо сотрите флеш
 

gaterkik

New member
у вас бесконечный цикл i всегда 1
-----------------------
возьмите загрузчик от разработчика ESP и загрузите кусок любой прошивки
либо сотрите флеш
Да, я понял что бесконечный цикл. А как без него отслеживать состояние входа и при изменении выполнять действие?

Как сделать задержку если tmr.delay не работает
 

nikolz

Well-known member
Да, я понял что бесконечный цикл. А как без него отслеживать состояние входа и при изменении выполнять действие?

Как сделать задержку если tmr.delay не работает
а как вы определили что не работает он же у вас внутри цикла
 

NeoroN

Member
Думаю лучше было бы так написать :
Код:
--Set Pin mode
i = 1
in1 = 1
in2 = 2
out1 = 3
out2 = 4
gpio.mode(in1, gpio.INPUT)
gpio.mode(in2, gpio.INPUT)
gpio.mode(out1, gpio.OUTPUT)
gpio.mode(out2, gpio.OUTPUT)
tmr.alarm(1000, tmr.ALARM_AUTO, function()
in1_state = gpio.read(in1)
print(in1_state)
end)
А сейчас только затереть программатором ту часть флешки где Файловая система
 

gaterkik

New member
Думаю лучше было бы так написать :
Код:
--Set Pin mode
i = 1
in1 = 1
in2 = 2
out1 = 3
out2 = 4
gpio.mode(in1, gpio.INPUT)
gpio.mode(in2, gpio.INPUT)
gpio.mode(out1, gpio.OUTPUT)
gpio.mode(out2, gpio.OUTPUT)
tmr.alarm(1000, tmr.ALARM_AUTO, function()
in1_state = gpio.read(in1)
print(in1_state)
end)
А сейчас только затереть программатором ту часть флешки где Файловая система
Спасибо. Не знаю как затирать часть флешки. Поэтому прошил другой прошивкой(easy esp), затем снова nodemcu и всё ок.
 

nikolz

Well-known member
Спасибо. Не знаю как затирать часть флешки. Поэтому прошил другой прошивкой(easy esp), затем снова nodemcu и всё ок.
лучше так (нагляднее):
Код:
--Set Pin mode
local i,in1,in2,out1,out2 = 1,1,2,3,4
----------------------------------
 gpio.mode(in1, gpio.INPUT)
gpio.mode(in2, gpio.INPUT)
gpio.mode(out1, gpio.OUTPUT)
gpio.mode(out2, gpio.OUTPUT)
--------------------------------
local function cb_timer()
in1_state = gpio.read(in1)
print(in1_state)
end
----------------------------------------
tmr.alarm(1000, tmr.ALARM_AUTO, cb_timer)
в помощь:
Особенности создания программ в NODEMCU ESP8266 для «интернета вещей»
 
Сверху Снизу