現在我有一個需求,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引腳有這個特點,軟件復位可以保持住狀態
