在 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)
我可以用下面的代码用瞬时按钮控制继电器:
#!/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)