'距离传感器'和'继电器'的Python代码树莓派
我已经给了这个代码一个好去,并得到它的工作到一个点。代码的第一部分是距离传感器,似乎工作正常,也是'如果'的声明,当我得到它来检查2厘米和30厘米之间的距离似乎也可以正常工作,接通5秒继电器,但我现在想要做的是让它接通2个继电器5秒钟,而不仅仅是1秒,但不知道如何将第二个继电器添加到混音中。目前,我已将Pi连接到4个继电器板。'距离传感器'和'继电器'的Python代码树莓派
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()
阿拉斯泰尔你的生命的救星,谢谢,效果很好。是的,这是两个独立脚本的混合,但现在我有你的修复和我的原始代码,这将给我一个很好的比较,我错了什么地方,并明确了解这一点。再次感谢。 –
不用担心。记得upvote并接受我的回答:) –
供参考:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –
'如果距离> 2