Управление реле с помощью кнопки в 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)
Другие вопросы по тегам