Не зная схемы и / или того, что вы пытаетесь сделать со схемой, я не смогу улучшить код. но это должно работать:
import pigpio, time
Debounce = 0.02
Input23 = 23
Input24 = 24
Output18 = 18
Output4 = 4
pi_GPIO = pigpio.pi()
pi_GPIO.set_mode(Input23, pigpio.INPUT)
pi_GPIO.set_pull_up_down(Input23 , pigpio.PUD_UP)
pi_GPIO.set_mode(Input24, pigpio.INPUT)
pi_GPIO.set_pull_up_down(Input24 , pigpio.PUD_UP)
pi_GPIO.set_mode(Output18, pigpio.OUTPUT)
pi_GPIO.set_pull_up_down(Output18, pigpio.PUD_UP)
pi_GPIO.set_mode(Output4, pigpio.OUTPUT)
def cbf(gpio, level, tick):
time.sleep(Debounce) # only used if using a button or any mechanical switch. Change value according to the type of switch, see datasheet and/or experimentation
if pi_GPIO.read(Input23):
print("Input23 UP")
pi_GPIO.write(Output18, 0)
else:
print("Input23 DOWN")
pi_GPIO.write(Output18, 0)
cb = pi_GPIO.callback(Input23, pigpio.FALLING_EDGE, cbf)
while True:
if pi_GPIO.read(Input24) and pi_GPIO.read(Input23):
time.sleep(Debounce) # only used if using a button or any mechanical switch. Change value according to the type of switch, see datasheet and/or experimentation
if pi_GPIO.read(Input24) and pi_GPIO.read(Input23): # only used if using a button or any mechanical switch. Change value according to the type of switch, see datasheet and/or experimentation
pi_GPIO.write(Output4, 0)
Функция CBF будет вызываться всякий раз, когда происходит изменение значения, независимо от цикла while.
Вам нужно будет установить pigpio, если у вас его еще нет. более полнофункциональная библиотека RPi.GPIO, которая также поддерживает удаленный доступ, если она включена на устройстве pi.
pip install pigpio
Дайте мне знать, если есть какие-либо подробности, которые вы можете предоставить.