2017-08-27 77 views
1

因此,我开始使用hc-sr04超声波传感器并遇到问题。我想读取多个传感器(两个用于初学者),但是我在两者上获得相同的距离值。下面是代码:使用python读取BBB的多个超声波传感器

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import Adafruit_BBIO.GPIO as GPIO 
import time 

def distanceMeasurement(TRIG,ECHO): 

    GPIO.output(TRIG, True) 
    time.sleep(0.00001) 
    GPIO.output(TRIG, False) 

    while GPIO.input(ECHO) == 0: 
     pulseStart = time.time() 
    while GPIO.input(ECHO) == 1: 
     pulseEnd = time.time() 

    pulseDuration = pulseEnd - pulseStart 
    distance = pulseDuration * 17150 
    distance = round(distance, 2) 
    return distance 

#Configuration 
GPIO.setup("P9_15",GPIO.OUT) #Trigger 
GPIO.setup("P9_12",GPIO.IN) #Echo 
GPIO.setup("P9_11",GPIO.OUT) 
GPIO.setup("P9_13",GPIO.IN) 

#Security 
GPIO.output("P9_11", False) 
GPIO.output("P9_15", False) 
time.sleep(0.5) 

#main Loop 
try: 
    while True: 
     for i in range(2): 
      if i == 0: 
       recoveredDistance = distanceMeasurement("P9_11","P9_13") 
       print "Distance1: ",recoveredDistance,"cm" 
      elif i == 1: 
       recoveredDIstance = distanceMeasurement("P9_15","P9_12") 
       print "Distance2: ",recoveredDistance,"cm" 
     time.sleep(1) 
except KeyboardInterrupt: 
    print "Measurement stopped by user" 
    GPIO.cleanup() 

我得到两个不管同一个阅读对传感器2物体的距离,在传感器1读取距离是什么都显示;似乎传感器2被忽略。

做一些“手动调试”(即打印TRIG,ECHO)我注意函数收到
正确的参数,这里是输出到“调试”:

P9_11 
P9_13 

Distance1: 20.79 cm 
P9_15 
P9_12 

Distance2: 20.79 cm 
P9_11 
P9_13 

Distance1: 20.13 cm 
P9_15 
P9_12 

我想用一个温控功能阅读所有的传感器。预先感谢您

+1

'recoveredDIstance'中有一个类似的拼写错误。另外'for' /'if' /'else'没有任何意义。 –

回答

1

由于第二次测量保存为recoveredDIstance,所以可以打印两次相同的结果。所以recoveredDistance不变。 Python区分大小写。

while True: 
    recoveredDistance = distanceMeasurement("P9_11","P9_13") 
    print "Distance1: ", recoveredDistance, "cm" 
    recoveredDistance = distanceMeasurement("P9_15","P9_12") 
    print "Distance2: ", recoveredDistance, "cm" 
    time.sleep(1) 
相关问题