0
與瞬時按鈕的繼電器,我能夠與下面的代碼瞬時按鈕來控制繼電器:控制在Python
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(4, GPIO.OUT)
GPIO.output(4, GPIO.HIGH)
def callback_func(pin):
if GPIO.input(17):
GPIO.output(4, GPIO.HIGH)
else:
GPIO.output(4, GPIO.LOW)
GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func, bouncetime=200)
def main():
while True:
print "Not blocking! You're free to do other stuff here"
time.sleep(5)
if __name__ == "__main__":
main()
然而這似乎是隻有一次。一旦我釋放botton並再次嘗試,無論多少時間之間都無法工作。是否有一個特定的原因,它只會運行一次?
最好我希望能夠繼續使用這個按鈕,而不必停止python腳本並重新啓動它以獲得一次性按鈕中繼操作。
謝謝!
快速瀏覽,這兩種可能性是:你需要添加更多的代碼到你的while循環,和/或你需要的GPIO引腳復位輸出到初始狀態。當按下按鈕時,你想要什麼?順便說一下,我建議把所有的設置語句放到一個設置函數中... – Projski
OP,我寫了你從內存中使用的代碼,並且當時無法測試它。我現在看到,反彈使腳本錯過了釋放按鈕時出現的上升沿 - 至少如果你快速釋放它的話。我已經相應地更新了我對原來問題的回答。如果你在沒有任何反彈的情況下得到抖動,可以考慮重新添加「反彈時間」,但將其設置爲非常低的值 - 這是需要調整和測試的事情之一,因爲所有按鈕和手指都略有不同。無論如何,很高興你找到了它,並得到它的工作:) – jDo