Управление реле с помощью кнопки в 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 и не перезапуская его, чтобы получить одноразовое действие ретрансляции кнопки.
Спасибо!
1 ответ
Решение
Удаление bouncetime полностью решило проблему. Так:
GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func, bouncetime=200)
в
GPIO.add_event_detect(17, GPIO.BOTH, callback=callback_func)