我能够使用以下代码的瞬时按钮控制继电器:
#!/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脚本并重新启动它以获得一次性按钮中继操作。
谢谢!
答案 0 :(得分:1)
删除跳出时间完全解决了问题。所以:
GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func, bouncetime=200)
到
GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func)