我使用的是一个覆盆子圆周率与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()中的绿色按钮。并可能添加更好的错误处理。你知道吗
你应该检查你的按钮连接和按钮位置,当你按下按钮时,它们是如何改变它们的状态的,例如从高到低,或从低到高,并用万用表。有时焊料制造问题。在硬件控制之后,您可以查看“https://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/”,并且可以为您的项目使用其他输入函数。你知道吗
相关问题 更多 >
编程相关推荐