rpi4 add_event_detect триггер события
Я попытался реализовать прерывание на RPi4 с помощью add_event_detect()
функция. Моя структура следующая
вход: gpio20,
выход сигнала источника: gpio21, световой сигнал запуска
entertime_stamp = time.time()
''' config '''
INPUT_PIN = 20
OUTPUT_PIN = 21
''' gpio '''
GPIO.setmode(GPIO.BCM)
GPIO.setup(INPUT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # pull_up_down=GPIO.PUD_DOWN
GPIO.setup(OUTPUT_PIN, GPIO.OUT, initial=GPIO.LOW)
''' function for event trigger '''
def Interrupt(channel):
global OUTPUT_PIN
global GPIO
global time_stamp # put in to debounce
time_now = time.time()
if ((time_now - time_stamp) >= 0.3 and GPIO.input(INPUT_PIN)==1):
GPIO.output(OUTPUT_PIN, True)
time.sleep(0.2)
GPIO.output(OUTPUT_PIN, False)
print('Action trigger');
time_stamp = time_now
''' interrupt '''
GPIO.add_event_detect(INPUT_PIN, GPIO.RISING, callback = Interrupt, bouncetime = 200)
''' main '''
try:
while True:
print("input: {0}".format(GPIO.input(INPUT_PIN)))
time.sleep(0.5)
Мое правило - запускать gpio21 (от 0 до 1) при нарастании сигнала gpio20, поэтому я установил add_event_detect()
правило к "GPIO.RISING".
GPIO.add_event_detect(INPUT_PIN, GPIO.RISING, callback = Interrupt, bouncetime = 200)
но он также запускает gpio21 (от 0 до 1) при падении сигнала gpio20. Как это решить?