这是使用连接到reapberry-pi的ultrasoinic传感器测量距离的简单代码,并编写python脚本 -
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG = 16
ECHO = 20
print "Distance Measurement In Progress"
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
while True:
GPIO.output(TRIG, False)
print "Waiting For Sensor To Settle"
time.sleep(2)
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, 2)
print "Distance:",distance,"cm"
用例是 - 只有当超声波传感器的所有引脚都正确连接到电路和树莓派时,才必须运行此脚本。所以我的问题是,我们可以在运行脚本之前识别引脚连接吗?或者我们可以确定我们的硬件是否正常工作?
答案 0 :(得分:0)
使用接口的触发/回波方式,当传感器未安装时,您是否可以使用上拉使来自护林员的回声输入(永久)为1级?在您的代码中,此行在测距期间显示为0,并在检测到回声时显示为1。然后,初始化代码只检查卡在1的回波输入,以确定是否安装了游侠。无论如何,您都需要在该线路上进行上拉或下拉,以确保在未连接设备时它具有有效电平。
也许使用高值(100k?)电阻将触发输出引脚连接到回波输入引脚(并且回波引脚上没有上拉)会更好 - 初始化然后是摆动触发引脚并检查回声引脚迅速变为同一水平。如果它变化不那么快,可能会附着超声波测距仪。
可能更强大的方法是使用像US-100这样的超声波传感器,例如参见http://www.ebay.co.uk/itm/US-100-Ultrasonic-Sensor-Module-Temperature-Compensation-Range-for-Arduino-K6-/291843077304?hash=item43f333f4b8:g:vgkAAOSwFnFV-7Fx,它有一个跳线来选择串行输出,每100ms发送一次。使用串行接口,您可以根据串行端口上是否存在数据来了解设备是否安装。