在 Python 中用瞬时按钮控制继电器

Controlling a relay with a momentary button in 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()

然而,这似乎只有一次。一旦我松开按钮并重试,无论间隔多长时间都无法正常工作。是否有特定原因它只会 运行 一次?

最好我希望能够继续使用此按钮,而不必停止 python 脚本并重新启动它以获得一次性按钮继电器操作。

谢谢!

删除 bouncetime 完全解决了这个问题。所以:

GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func, bouncetime=200)

GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func)