2

我正在尝试制作一个“游戏”,同时学习 Raspberry Pi 上的 Python 和 GPIO。这就是我的自动取款机:

while playing == 1:
        if (GPIO.input(9) == 0):
            GPIO.output(18, GPIO.LOW)
            print("Well done!!")
            time.sleep(1)
        else:    
            print("Wrong!")
            lives = lives - 1
            time.sleep(1)
        playing = 0

现在,我的问题是程序正在执行 if 语句并直接进入 else (如您所料),但是,我希望程序在 if 语句的第一部分等待一秒钟,然后转到别的。

提前致谢!

4

1 回答 1

1

也许你可以像这样重写它:

while playing == 1:
   for _ in range(10):
       if GPIO.input(9) == 0:
           GPIO.output(18, GPIO.LOW)
           print("Well done!!")
           break
       time.sleep(0.1)
   else:    
       print("Wrong!")
       lives = lives - 1

这会以 100 毫秒的间隔轮询 GPIO 引脚十次。如果 GPIO 引脚在十次尝试中保持高电平,else则会命中。

(如果您还没有遇到 Python 的for-else构造,请参阅为什么 python 在 for 和 while 循环之后使用 'else'?。

或者,您可以使用GPIO模块的更高级功能,例如边缘检测和回调。请参阅文档

于 2015-02-22T17:40:29.190 回答