如何识别超声波引脚是否使用python代码从电路中移除

时间:2016-12-13 08:14:07

标签: python raspberry-pi

这是使用连接到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"

用例是 - 只有当超声波传感器的所有引脚都正确连接到电路和树莓派时,才必须运行此脚本。所以我的问题是,我们可以在运行脚本之前识别引脚连接吗?或者我们可以确定我们的硬件是否正常工作?

1 个答案:

答案 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发送一次。使用串行接口,您可以根据串行端口上是否存在数据来了解设备是否安装。