我有一个相当好奇的脚本挑战。我有一个提取单元,我试图通过Python脚本和常规中继来控制。继电器使用GPIO BCM引脚15连接到我的RPi 3型号B,它接地,并从PI的VCC引脚接收5V。到现在为止还挺好。我已经测试过继电器,并按照预期关闭和打开。Python:在GPIO引脚状态发生变化时保持操作定时器
我写的脚本有一个部分,它定义了在继续下一步操作之前必须暂停的时间长度。每个操作都被命名为“关闭并打开”。这两项操作必须持续21600秒(6小时)。当关闭操作(提取器开启)结束时,开放操作(提取器关闭)开始,并且我想尝试使用脚本来获得灵巧。
我想要做的是在更改引脚15的状态时保持“打开”操作的计数器。所以,当打开操作计数到21600秒时,我希望提取器打开60秒(1分钟),然后它必须再次关闭300秒(5分钟)。我试图找出它,但它似乎任何时候我改变引脚的状态,它停止打开操作的计数器和脚本停止运行或失败。
当我改变引脚15的状态时,我似乎无法弄清楚如何保持计时器计数高达21600秒,在打开的操作中。请看下面,这是我一直在运行的脚本个月。它运作良好,但我现在想通过上述方法来改进它。
为了让您知道,pi在一个带有plexi-window的电箱中无头运行,以便我可以看到接力状态。我已经设置脚本在启动时使用rc.local自动运行,它完美地工作。第一个自动运行的脚本是一个GPIO清理脚本,它可以将继电器的状态重置为打开状态(无电流),以防由于某种原因关闭(通常不会)。提取脚本然后运行,其余的是历史。除非继电器感到困惑(有时候他们会这样做),否则我不会重新启动PI,即使打开操作已经开始,它们开始表现得很奇怪,就像保持关闭一样,这意味着引脚15的状态会改变,从而告诉继电器打开(避难所想通了),但它只发生每几周一次,但这是另一天的谈话。现在我想了解如何编辑此脚本以在打开操作计数器继续运行时(1分钟)和关闭(5分钟)之间切换提取器单元。
当关闭的操作再次启动时,提取器单元可以运行整整6个小时。任何社区的帮助将不胜感激。谢谢大家。
# !/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# init list with pin numbers
pinList = [15]
# Loop through pins and set mode and state to 'high'.
for i in pinList:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, 1)
# time to sleep between operations in the main loop
Closed = 21600
Open = 21600
# main loop
while True:
GPIO.output(15, 0)
print "Closed"
time.sleep(Closed);
GPIO.output(15, 1)
print "Open"
time.sleep(Open);
PS ......我明白,引脚状态'低或0'意味着没有电流流动,所以继电器应该打开。相反,引脚状态为“高电平”或“1”表示电流正在流动,继电器应关闭。这里不是这种情况。有了这个继电器,低意味着关闭,高意味着打开。这使我感到困惑,尽管我可能误解了低和高的实际含义。
感谢Markus,我现在只是回应道歉。工作生活平衡出轨时,时间过得很快。您的输入非常有帮助:-) – Safjoe