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()
我已经很好地编写了这段代码,并使其发挥作用。代码的第一部分是关于距离传感器的,似乎工作正常,还有 '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()