我错误地在我的nodemcu / ESP8266主板上加载无限循环的init.lua。
然后电路板继续重启而不执行任何其他指令。
i = 10
timerId = 0
timerDelay = 30000 -- Milisec
pin = 5
gpio.mode(pin,gpio.INPUT)
repeat(
print(gpio.read(pin))
i = i + 1
end)
until i < 5
答案 0 :(得分:2)
我试过刷电路板
python esptool.py -p /dev/tty.wchusbserial1450 run
python esptool.py -p /dev/tty.wchusbserial1450 write_flash 0x0000 ../nodemcu_latest.bin
然后修复我的代码并重新加载它,现在工作正常
答案 1 :(得分:1)
我所做的是使用ESPlorer(Java app)http://esp8266.ru/esplorer/#download
当我在瞎逛时,我只有init.lua
文件名为init1.lua
,如果ESP重新启动没问题,您只需点击右侧显示的init1.lua
按钮(使用&#34; Reload&#34;按钮显示文件系统内容后)
简单易用,完成后您可以右键单击该文件将其重命名为init.lua
。
答案 2 :(得分:1)
--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;
tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
dofile("program.lua")--Write your program name in dofile
end)
我确实使用此策略以防止在发生错误时启动时出现无限循环。将此文件另存为init.lua并将程序写入program.lua
答案 3 :(得分:0)
这不是一种优雅的恢复方式。
最好的办法是建立一种方法来防止代码在紧急情况下发出声明。例如,正如TerryE建议的那样,使用timer.alarm
中的init.lua
设置一次性定时器,以便用足够长的延迟调用您的主代码,以便您可以调用timer.stop
#39;想要启动你的主要代码。
答案 4 :(得分:0)
我遇到了同样的问题并被困在while
循环中。
闪烁不同的固件对我有用。
答案 5 :(得分:0)
此答案与 researcher01's answer 基本相同,但使用了 OO API timers,因为上面使用的答案已于 2019 年删除。
--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;
tmr.create():alarm(IDLE_AT_STARTUP_MS, tmr.ALARM_SINGLE,function()
dofile("program.lua")--Write your program name in dofile
end)