我刚刚拿起了我的第一个Raspberry Pi和2个频道转播。我试图学习如何使用Python进行编码,因此我认为使用Pi会是一个很好的起点。我有一个关于通过GPIO引脚进行继电器定时的问题。
首先,我使用Raspbian Pixel并通过Gedit编辑我的脚本。请看下面我到目前为止的脚本:
# !/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
# init list with pin numbers
pinList = [14]
# loop through pins and set mode and state to 'high'
for i in pinList:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
# time to sleep between operations in the main loop
SleepTimeL = 60 #1 minute
# main loop
try:
GPIO.output(14, GPIO.LOW)
print "open"
time.sleep(SleepTimeL);
GPIO.cleanup()
#Reset GPIO settings
GPIO.cleanup()
# end program cleanly
except KeyboardInterrupt:
print "done"
现在效果很好,打开连接到引脚14的继电器没问题。它按要求循环60秒,然后结束程序。程序结束后,GPIO设置将被重置并且继电器关闭,但这是程序的结束,也是我的问题开始的地方。
我想要这个脚本做的是打开继电器60秒,然后关闭它180秒。一旦达到180秒,它必须重新运行'尝试'声明并打开继电器另外60秒等等。简而言之,我想要一个无限循环,只能通过取消运行脚本来中断。我不确定如何告诉Python关闭继电器180秒然后重新运行try语句,或者如何使它成为无限循环。
我非常感谢社区的一些意见。非常感谢任何反馈或帮助。谢谢大家。
答案 0 :(得分:0)
只需使用while True
循环,例如:
# main loop
while True:
GPIO.output(14, GPIO.LOW)
print "open"
time.sleep(SleepTimeL);
GPIO.cleanup()
print "done"
答案 1 :(得分:0)
我同意reptilicus,你只需要添加一个while循环。 “while True”将永远运行,直到你按下ctrl-C来打破。您只需要添加第二个延迟,以便在循环之前将继电器保持关闭180秒。您可以创建一个不同的睡眠时间变量,或者只是将您拥有的变量乘以2。
# main loop
while True:
try:
GPIO.output(14, GPIO.LOW)
print "open"
time.sleep(SleepTimeL);
GPIO.cleanup()
#Reset GPIO settings
GPIO.cleanup()
time.sleep(2*SleepTimeL)
# end program cleanly
except KeyboardInterrupt:
print "done"