Python 'Distance Sensor' 和 'Relay' Raspberry Pi 的代码

Python code for 'Distance Sensor' and 'Relay' Raspberry Pi

我已经很好地编写了这段代码,并使其发挥作用。代码的第一部分是关于距离传感器的,似乎工作正常,还有 'if' 语句,当我用它来检查 2cm 和 30cm 之间的距离时,通过打开继电器 5 似乎也可以正常工作秒,但我现在想做的是让它打开 2 个继电器 5 秒,而不仅仅是 1 个,但不确定如何将第二个继电器添加到混音中。目前我将 Pi 连接到 4 继电器板。

    import RPi.GPIO as GPIO            
import time                        
GPIO.setmode(GPIO.BCM)                

GPIO.setwarnings(False)

TRIG = 23                                  
ECHO = 24                                 

print "Distance measurement in progress"

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

while True:

  GPIO.output(TRIG, False)                
  print "Waitng 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)            

  if distance > 2 and distance < 400:      
    print "Distance:",distance - 0.5,"cm"  
  else:
    print "Out Of Range"                  

GPIO.setwarnings(False)

  if distance >2 and < 30:
pinList = [3]

for i in pinList: 
    GPIO.setup(i, GPIO.OUT) 
try:
  GPIO.output(3, GPIO.LOW)
  print "ON"
  time.sleep(5)
  GPIO.output(3, GPIO.HIGH)
  print "OFF"

except KeyboardInterrupt:
  print "  Quit"

  GPIO.cleanup()

您似乎已经将许多不同的来源拼凑在一起。原始脚本之一只是使用列表 (pinList) 进行迭代 - 这种原始用法似乎在某处丢失了。

下面的代码应该能让您回到正确的轨道上。比较我所做的更改并做一些进一步阅读可能是值得的。您需要更改第 11 行以匹配附加继电器的引脚号。

import RPi.GPIO as GPIO            
import time                        

GPIO.setmode(GPIO.BCM)                
GPIO.setwarnings(False)

TRIG = 23                                  
ECHO = 24                                 

# Add your relay output pins here:
pinList = [3, your_other_relaypin]

for pin in pinList: 
    GPIO.setup(pin, GPIO.OUT)

print "Distance measurement in progress"

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

try:
    while True:

        GPIO.output(TRIG, False)                
        print "Waitng 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)            

        if distance > 2 and distance < 400:      
            print "Distance: {distance}cm".format(distance=(distance - 0.5) )  
        else:
            print "Out Of Range"                  

        if distance >2 and distance < 30:

            for pin in pinList: 
                print "ON PIN {pin}".format(pin=pin)
                GPIO.output(pin, GPIO.LOW)

            time.sleep(5)

            for pin in pinList: 
                print "OFF PIN {pin}".format(pin=pin)
                GPIO.output(pin, GPIO.HIGH)

    except KeyboardInterrupt:
        print "  Quit"
        GPIO.cleanup()