九,ESP8266 判断是断电上电(强制硬件复位)之后运行的内部程序还是内部软件复位之后运行的程序(基于Lua脚本语言)...

本文介绍了一种利用WIFI模块特性确保继电器状态在不同复位情况下的控制策略。通过保留引脚高电平状态区分软件复位与断电复位,实现继电器状态的稳定控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在我有一个需求,WIFI模块控制一个继电器,我要做的是如果内部程序跑乱了,造成了内部程序复位重启,那么控制继电器的状态不能改变

如果是设备断电了,然后又来电了,我需要的是继电器一定要是断开才好。不能加额外的电路,只能在程序中做判断

其实  内部程序跑乱了,造成了内部程序复位重启     和   设备断电了,然后又来电了     然后都是重新执行程序,不知道大家是如何做的

我的思路是。。。

先说一下WIFI模块的一个很大的优点,

大家有没有注意WIFI模块的引脚,假设配置了一个引脚为高电平,无论内部如何的利用软件复位,这个引脚都会保持高电平

还有就是,WIFI模块如果是断电上电那么引脚一开始一定是低电平,但是必须是这样配置

local PowerResetPin = 2
gpio.mode(PowerResetPin, gpio.OUTPUT)
local PowerReset = false
if  gpio.read(PowerResetPin) == 1 then
    PowerReset = false
    print("PowerReset = false")
else
    PowerReset = true
    print("PowerReset = true")
end

 

 最终我的方案是:

先读取引脚是不是低电平,如果是,就是说是断电上电然后执行的程序,如果不是,就是说内部复位重启然后执行的程序

其实是自己人为设置的那个引脚输出的高电平,看下面的程序

 

local PowerResetPin = 2
gpio.mode(PowerResetPin, gpio.OUTPUT)
local PowerReset = false
if  gpio.read(PowerResetPin) == 1 then
    PowerReset = false
    print("PowerReset = false")
else
    PowerReset = true
    print("PowerReset = true")
end

gpio.write(PowerResetPin, 1) 

 

 整个程序运行之前先运行上面的程序

如果 PowerReset = false  说明是内部程序复位重启然后执行的程序

如果 PowerReset = true   说明是断电上电然后执行的程序

 

好了就是这么简单,主要还是因为WIFI引脚有这个特点,软件复位可以保持住状态

 

转载于:https://www.cnblogs.com/yangfengwu/p/9749008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值