现在我有一个需求,WIFI模块控制一个继电器,我要做的是如果内部程序跑乱了,造成了内部程序复位重启,那么控制继电器的状态不能改变
如果是设备断电了,然后又来电了,我需要的是继电器一定要是断开才好。不能加额外的电路,只能在程序中做判断
其实 内部程序跑乱了,造成了内部程序复位重启 和 设备断电了,然后又来电了 然后都是重新执行程序,不知道大家是如何做的
我的思路是。。。
先说一下WIFI模块的一个很大的优点,
大家有没有注意WIFI模块的引脚,假设配置了一个引脚为高电平,无论内部如何的利用软件复位,这个引脚都会保持高电平
还有就是,WIFI模块如果是断电上电那么引脚一开始一定是低电平,但是必须是这样配置
local PowerResetPin =
gpio.mode(PowerResetPin, gpio.OUTPUT)
local PowerReset = false
if gpio.read(PowerResetPin) == then
PowerReset = false
print("PowerReset = false")
else
PowerReset = true
print("PowerReset = true")
end
最终我的方案是:
先读取引脚是不是低电平,如果是,就是说是断电上电然后执行的程序,如果不是,就是说内部复位重启然后执行的程序
其实是自己人为设置的那个引脚输出的高电平,看下面的程序
local PowerResetPin =
gpio.mode(PowerResetPin, gpio.OUTPUT)
local PowerReset = false
if gpio.read(PowerResetPin) == then
PowerReset = false
print("PowerReset = false")
else
PowerReset = true
print("PowerReset = true")
end gpio.write(PowerResetPin, )
整个程序运行之前先运行上面的程序
如果 PowerReset = false 说明是内部程序复位重启然后执行的程序
如果 PowerReset = true 说明是断电上电然后执行的程序
好了就是这么简单,主要还是因为WIFI引脚有这个特点,软件复位可以保持住状态