故障排除 Python 连接到 Raspberry Pi 的超声波传感器的代码
Troubleshooting Python code for a ultrasonic sensor attached to Raspberry Pi
我正在尝试编写一个程序来显示连接到 Pi 3B+ 的超声波传感器的输出。代码 'hangs' 我的意思是输出的显示突然停止并且程序不再响应。谁能帮我指出我代码中的错误?
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
TRIG = 16
ECHO = 18
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
try:
while True:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance+1.15, 2)
if distance<=400 and distance>=5:
print "distance:",distance,"cm"
except KeyboardInterrupt:
GPIO.cleanup()
编辑:解决了问题,Try 和 except 块可能是罪魁祸首,我删除了 try 块,现在我可以无限期地输出。谢谢你的帮助。
错误出在代码的 Try 和 Except 块上,如果板上的接收器没有收到任何回声输出,则 try 块失败并进入 except 块,我清除了连接到 Pi 的所有引脚.这就是代码在一段时间后停止工作的原因,一旦未检测到回声,引脚就会被清除。删除 try 块允许不间断的范围。代码修改如下:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
TRIG = 16
ECHO = 18
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
while True:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance+1.15, 2)
if distance<=400 and distance>=5:
print "distance:",distance,"cm"
我正在尝试编写一个程序来显示连接到 Pi 3B+ 的超声波传感器的输出。代码 'hangs' 我的意思是输出的显示突然停止并且程序不再响应。谁能帮我指出我代码中的错误?
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
TRIG = 16
ECHO = 18
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
try:
while True:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance+1.15, 2)
if distance<=400 and distance>=5:
print "distance:",distance,"cm"
except KeyboardInterrupt:
GPIO.cleanup()
编辑:解决了问题,Try 和 except 块可能是罪魁祸首,我删除了 try 块,现在我可以无限期地输出。谢谢你的帮助。
错误出在代码的 Try 和 Except 块上,如果板上的接收器没有收到任何回声输出,则 try 块失败并进入 except 块,我清除了连接到 Pi 的所有引脚.这就是代码在一段时间后停止工作的原因,一旦未检测到回声,引脚就会被清除。删除 try 块允许不间断的范围。代码修改如下:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
TRIG = 16
ECHO = 18
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
while True:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance+1.15, 2)
if distance<=400 and distance>=5:
print "distance:",distance,"cm"