Я использую Raspberry Pi с 2 кнопками и OLED-экран для взаимодействия с пользователем. Этот код работает с первого раза, но как только я даю «отрицательный» ответ красной кнопке и пытаюсь вызвать метод снова, он больше не реагирует на нажатие любой кнопки, и я не могу выйти из кода (нужно нажать кнопка включения), поэтому я знаю, что моя обработка ошибок также не работает.
Я пытался удалить события кнопок в конце getanswer () и снова добавить их в Interaction (), но это также не работает.
import RPi.GPIO as GPIO
#button
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set pin to be an input pin and set initial value to be pulled low (off)
GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set pin to be an input pin and set initial value to be pulled low (off)
def getanswer():
GPIO.add_event_detect(19, GPIO.RISING, bouncetime=300)
GPIO.add_event_detect(18, GPIO.RISING, bouncetime=300)
while True:
if GPIO.event_detected(19):
print('yay')
return 1
if GPIO.event_detected(18):
print('try again?')
return 0
time.sleep(.01)
def interaction():
with canvas(device) as draw:
draw.text((0, 0), 'Click the green', fill="white")
draw.text((0, 12), 'button to begin!', fill="white")
GPIO.wait_for_edge(19, GPIO.RISING, bouncetime=300)
with canvas(device) as draw:
draw.text((0, 0), 'ready?', fill="white")
time.sleep(5)
#dostuff
with canvas(device) as draw:
draw.rectangle((0,25,90,60), outline="white", fill=tup)
draw.text((0, 0), 'Is this it?', fill="white")
ans = getanswer()
if ans == 0:
interaction()
else:
print('goodbye')
def main():
interaction()
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
GPIO.cleanup()
Я просто хочу просмотреть, пока пользователь не нажмет зеленую кнопку в getanswer (). И, возможно, добавьте лучшую обработку ошибок.