我正在尝试使NodeMCU ESP8266开发板与HC SR04超声波传感器一起使用。我一直在读“ 0”,这不是事实。
我将传感器的接地和5v引脚连接到5v信号源,并将GPIO引脚4和5的Echo和Trigger引脚连接起来。理论上,一切都应该正常工作,但我一直保持“ 0”状态。也许我的代码有问题?见下文:
import machine
import sys
import time
time.sleep(1) #Just for everything to settle down
while 1:
pinTrigger = machine.Pin(5, machine.Pin.OUT) #defining the pins
pinEcho = machine.Pin(4, machine.Pin.IN) #defining the pins
pinTrigger.high()
time.sleep(0.00001)
pinTrigger.low()
time.sleep(0.5)
start = time.time()
stop = time.time()
while pinEcho ==0:
start = time.time() #Starting the time when sending out the signal
while pinTrigger ==1:
stop = time.time() #Stopping the time when the signal comes back
elapsed = stop-start #working out the time.
distance = elapsed * 34000 #multiply by speed of sound to get distance
distance = distance / 2 #divide by 2 becuase it was there and back
print ("Distance : %.1f" % distance)
sys.exit()
请帮忙。
解决问题的方法如下:
import machine
import utime
while True:
trig=machine.Pin(5, machine.Pin.OUT)
trig.off()//stop reading
utime.sleep_us(2)
trig.on()
utime.sleep_us(10)
trig.off()
echo=machine.Pin(4, machine.Pin.IN)
while echo.value() == 0:
pass
t1 = utime.ticks_us()
while echo.value() == 1:
pass
t2 = utime.ticks_us()
cm = (t2 - t1) / 58.0
print(cm)
utime.sleep(2)
在互联网上的其他地方,他们建议您在回波和NodeMCU板上的引脚(ESP8266)之间放置一个电阻器,这使测量结果非常糟糕。因此,现在我可以将其连接到我的RPi GPIO的5v和地面(连接到HC-SR04)上使其100%正常工作,并将触发和回波连接到NodeMCU板引脚。
还要注意的另一件事是,我正在以1s(代码的最后一行)进行读数,将其更改为2秒可以使代码更加准确。
希望这对某人有帮助。
如下图:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句