我使用 LEGO 制作了这个简单的机器人,它使用 Raspberry Pi 作为计算机。我编写的代码是用 Python 编写的,基本上它的作用是使用超声波传感器来测量距离。这是代码:
import RPi.GPIO as g
import time as t
g.setmode(g.BCM)
g.setwarnings(False)
# trig is the pin on the sensor which will emit a very fast pulse
trig = 21
# echo is the pin which will recieve the pulse from the trig
echo = 20
g.setup(trig, g.OUT)
g.setup(echo, g.IN)
def distance(dur):
global dis
start = 0
end = 0
g.output(trig, False)
t.sleep(0.01)
g.output(trig, True)
t.sleep(0.00001)
g.output(False)
while g.input(echo) == 0:
start = t.time()
while g.input(echo) == 1:
start = t.time()
duration = end - start
dis = duration * 17150
dis = round(dis,2)
print "Distance: " + dis
t.sleep(dur)
while True:
# so the function is being called, and the time between outputs is 0.01 seconds so it is very
# fast and quickly showing on the screen. If the distance is less than 5, then the program
# will print out "Hi" to show that. s
distance(0.01)
if dis < 5:
print "Hi"
很简单吧?但是你看,代码执行得非常完美,它显示了距离,当我把手靠近传感器并且变量 dis 变得小于 5 时,程序打印出“Hi”......直到这个:
超声波传感器距离输出图片。 您可以看到输出流刚刚停止。它真的停止了,就是这样。没有错误信息,什么都没有。最糟糕的是,它是随机执行的。它在打印距离时可能会停止,在打印“Hi”时可能会停止,但我确实注意到它在打印“Hi”时停止的频率更高,并且在随机数量的输出后停止。所以接下来我要做的是按 ctrl+c 停止程序,这就是它的样子。我还忘了提到三个超声波传感器连接在一起,只使用 GPIO 21 和 GPIO 20。尽管它仍然可以工作,即使它们有自己的独立引脚对,它们仍然存在相同的失速问题,所以它不会一个区别。
如果有人知道是什么原因造成的,我会很高兴,因为我花了几个小时试图修复它。