在Raspberry Pi上使用超声波测距模块控制继电器模块

时间:2019-01-19 04:24:46

标签: python raspberry-pi raspberry-pi3 gpio sensors

我正在尝试使用Raspberry Pi B +型创建一个程序,该程序使用超声波测距模块来控制继电器模块。我将使用我创建的这个东西来检测传送带何时停止移动。

我的程序将依靠超声波测距模块来连续测量距离。由于传送带上有物体,因此当物体经过超声波测距模块时,距离将连续变化。因此,如果传送带停止移动,则超声波测距模块测得的距离将保持不变。当这种情况持续5秒钟时,我的程序将关闭继电器模块。

我的代码目前无法正常工作。问题是什么?到目前为止,这就是我所拥有的。 (还请注意,我正在为超声测距模块和中继模块使用GPIO扩展板。)

#!/usr/bin/env python

import RPi.GPIO as GPIO
import time

TRIG = 11
ECHO = 12
RelayPin = 11    # pin11 

def setup():

GPIO.setmode(GPIO.BOARD)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

GPIO.setup(RelayPin, GPIO.OUT)
GPIO.output(RelayPin, GPIO.HIGH)  

def distance():

    GPIO.output(TRIG, 0) 
time.sleep(0.000002)

GPIO.output(TRIG, 1)
time.sleep(0.00001)
GPIO.output(TRIG, 0)


while GPIO.input(ECHO) == 0:
    a = 0
time1 = time.time()
while GPIO.input(ECHO) == 1:
    a = 1
time2 = time.time()

during = time2 - time1
return during * 340 / 2 * 100

def loop():

while True:
    dis = distance()

    print dis, 'cm'
    print ''
    time.sleep(5)
    dis12 = distance() 
    if dis = dis2 
        GPIO.output(RelayPin, GPIO.LOW);    

def destroy():

GPIO.output(RelayPin, GPIO.HIGH)
GPIO.cleanup()                     # Release resource

if __name__ == '__main__':     # Program start from here
setup()
try:
    loop()
    except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
    destroy()

0 个答案:

没有答案