我有一個相當好奇的腳本挑戰。我有一個提取單元,我試圖通過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