Raspberry Pi: Python try/except 循环
Raspberry Pi: Python try/except loop
我刚刚获得了我的第一个 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 秒,它必须重新 运行 'try' 语句并再打开继电器 60 秒,依此类推。简而言之,我想要一个只能通过从 运行ning 取消脚本来中断的无限循环。我不确定如何告诉 Python 关闭继电器 180 秒然后重新 运行 try 语句,或者如何让它成为一个无限循环。
非常感谢社区的一些意见。非常感谢任何反馈或帮助。谢谢大家
只需使用 while True
循环,例如:
# main loop
while True:
GPIO.output(14, GPIO.LOW)
print "open"
time.sleep(SleepTimeL);
GPIO.cleanup()
print "done"
我同意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"
我刚刚获得了我的第一个 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 秒,它必须重新 运行 'try' 语句并再打开继电器 60 秒,依此类推。简而言之,我想要一个只能通过从 运行ning 取消脚本来中断的无限循环。我不确定如何告诉 Python 关闭继电器 180 秒然后重新 运行 try 语句,或者如何让它成为一个无限循环。
非常感谢社区的一些意见。非常感谢任何反馈或帮助。谢谢大家
只需使用 while True
循环,例如:
# main loop
while True:
GPIO.output(14, GPIO.LOW)
print "open"
time.sleep(SleepTimeL);
GPIO.cleanup()
print "done"
我同意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"