Raspberry Pi:Python try/except循环

2024-10-06 12:33:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚拿起我的第一个树莓派和2通道继电器。我正在尝试学习如何用Python编写代码,所以我认为使用Pi是一个很好的起点。我有一个关于通过GPIO引脚的继电器的时间的问题。在

不过,首先是用我的文字编辑。到目前为止,我的剧本请看以下内容:

# !/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秒,依此类推。简而言之,我想要一个无限循环,它只能通过取消运行脚本来中断。我不知道如何告诉Python关闭中继180秒,然后重新运行try语句,或者如何使其成为无限循环。在

我真的很感谢社区的一些意见。如有任何反馈或帮助,我们将不胜感激。谢谢大家。在


Tags: andtoinimport程序loopoutputgpio
2条回答

我同意爬行动物,你只需要添加一个while循环。”“whiletrue”将永远运行,直到您按下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"

只需使用while True循环,类似于:

# main loop
while True:
    GPIO.output(14, GPIO.LOW)
    print "open"
    time.sleep(SleepTimeL);
GPIO.cleanup()
print "done"

相关问题 更多 >