gpt4 book ai didi

Lua ESP8266 tmr问题

转载 作者:行者123 更新时间:2023-12-02 20:00:32 25 4
gpt4 key购买 nike

我正忙于开发由 ESP-03 控制的调光灯。但我读过的内容,我有一个问题。请参阅下面的代码,然后我将解释:

device_id = "553CDA2DEAC90"
query_id = ""
dim = 120

wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD")
wifi.sta.connect()
wifi.sta.setip({ip="10.0.0.122",netmask="255.255.255.0",gateway="10.0.0.2"})

outpin = 7 --GPIO13
gpio.mode(outpin,gpio.OUTPUT)
gpio.write(outpin,gpio.LOW)
inpin = 6 --GPIO12
gpio.mode(inpin,gpio.INT,gpio.PULLUP)

function zero_cross()
dt = 75*dim
tmr.delay(dt)
gpio.write(outpin,gpio.HIGH)
tmr.delay(1)
gpio.write(outpin,gpio.LOW)
tmr.wdclr()
end

gpio.trig(inpin,"up",zero_cross)

function sendData()
if(wifi.sta.status() == 5)then
conn=net.createConnection(net.TCP, 0)
conn:connect(PORT,'IP')
if(firstStart == 0)then
conn:send(device_id)
conn:send("|0|")
else
if(query_id == nil)then
conn:send(device_id)
conn:send("|0|")
conn:send(dim)
else
conn:send(device_id)
conn:send("|")
conn:send(query_id)
conn:send("|")
conn:send(dim)
query_id = nil
end
end
conn:on("receive", function(conn, payload)
payload = string.gsub(payload, " ", "")
dim = string.sub(payload, 0, string.find(payload, "|")-1)
payload = string.gsub(payload, dim.."|", "")
query_id = payload
conn:close()
end)
else
wifi.sta.connect()
end
end
tmr.alarm(6, 1000, 1, sendData )

我面临的问题是,当我在脚本底部启动 tmr.alarm()...但是在函数 Zero_cross() 下它使用 tmr.delay ,这似乎使 tmr.alarm( )不再起作用。所发生的只是 ESP 不断重新启动。如果我单独运行上面的代码(只是调光功能或只是 sendData 功能,那么一切都很完美)。有没有人有什么建议?

最佳答案

Nodemcu调用lua回调directly from hardware interrupt ,同时需要使用luahook ,(由于Lua没有直接支持中断,所以必须模拟它们)。这可能很危险。

解决方案:同时只使用1个中断:

local send_time, last_gpio
last_gpio = gpio.read(6)
send_time = 0

tmr.trigger(1, 10, 1, function()
if (gpio.read(6) == 1 and last_gpio == 0) then
last_gpio = 1
zero_cross()
else if (gpio.read(6) == 0 and last_gpio == 1)
last_gpio = 0
end

send_time = send_time + 1

if (send_time > 100) then
send_data()
end
end)

关于Lua ESP8266 tmr问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com