zoukankan      html  css  js  c++  java
  • 九,ESP8266 判断是断电上电(强制硬件复位)之后运行的内部程序还是内部软件复位之后运行的程序(基于Lua脚本语言)

    现在我有一个需求,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引脚有这个特点,软件复位可以保持住状态

  • 相关阅读:
    /etc/fstab 文件如何填写(转)
    在linux下PHP和Mysql环境搞事情
    nginx 添加的配置信息
    查看服务器硬件信息
    Centos下的SVN搭建
    20170413B端业务访问故障排查思路
    快速搭建BIND服务,并实现解析
    零基础学python-19.1 列表解析与序列映射函数map
    零基础学python-18.10 函数式编程工具:filter和reduce
    零基础学python-18.9 序列映射函数:map
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/9749008.html
Copyright © 2011-2022 走看看