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

时间:2016-05-28 15:40:57

标签: python gpio

我能够使用以下代码的瞬时按钮控制继电器:

#!/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脚本并重新启动它以获得一次性按钮中继操作。

谢谢!

1 个答案:

答案 0 :(得分:1)

删除跳出时间完全解决了问题。所以:

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

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