我已经开始在 esp8266 上使用 nodemcu。我已将 esp 与 hc-sr04(用于距离测量的超声波传感器)连接起来。hc-sr04 需要接收高电平触发引脚 10us。之后,hc 发送回显引脚的高电平状态。来自回波引脚的高状态时间可以不同(取决于距离)。时间在我们里面计算。问题是这次来自回显引脚的时间不正确(恕我直言)。我不确定,但这可能是 tmr. nodemcu 的精度不够高?为什么每个循环的时间差异如此之大?
我的代码和下面你会从代码中找到时间打印:
gpio.write(3,gpio.LOW)
gpio.mode(3,gpio.OUTPUT)
gpio.write(4,gpio.LOW)
gpio.mode(4,gpio.INT)
time=0
flag=0
i=1
function startDis(level)
time=tmr.now()
end
function endDis(level)
time=tmr.now()-time
flag=0
end
function trigger()
gpio.write(3,gpio.HIGH)
tmr.delay(10)
gpio.write(3,gpio.LOW)
flag=1
end
gpio.trig(4,'up',startDis)
gpio.trig(4,'down',endDis)
// ---------这部分已更改--------
while i<10 do
if flag==0 then
trigger()
end
tmr.delay(1000000)
print(time)
i=i+1
end
// - - - - - - - - 至 - - - - - -
tmr.alarm(0,2000,1,function()
print(time)
print(i)
if flag==0 then
trigger()
end
i=i+1
if i==10 then tmr.stop(0) end
end)
代码打印:
0
440184038
1999856
442183990
4000221
444184055
6000175
446184287
7999686
感谢您提供线索和解决方案。