Программа на Raspberry Pi, в которой используются светодиоды GPIO и кнопки не работают должным образом - PullRequest
0 голосов
/ 29 ноября 2018

В основном я пытался создать игру Simon в Raspberry Pi, используя три светодиода и три кнопочных переключателя, но, похоже, это не сработало.Simon - игра, в которой вспыхивает случайная серия огней, количество огней мигает с каждым раундом, и игрок должен нажимать соответствующие кнопки по порядку.Есть три светодиодных индикатора и три нажимных кнопки.Не могли бы вы помочь мне?

import time
import random
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(23,GPIO.IN)
GPIO.setup(19,GPIO.IN)
GPIO.setup(40,GPIO.IN)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
GPIO.setup(38,GPIO.OUT)
def main():
    colours = []
    while True:
        choice = random.randint(0, 2)
        print(choice)
        colours.append(choice)
        for c in colours:
            if c == 0:
                GPIO.output(11,True)
                time.sleep(0.5)
                GPIO.output(11,False)
                time.sleep(0.5)
            if c == 1:
                GPIO.output(13,True)
                time.sleep(0.5)
                GPIO.output(13,False)
                time.sleep(0.5)
            if c == 2:
                GPIO.output(38,True)
                time.sleep(0.5)
                GPIO.output(38,False)
                time.sleep(0.5)
        count = 0
        undone = True
        while undone:
            if count >= len(colours):
                print("Correct!")
                break
            elif not GPIO.input(19):
                if colours[count] == 0:
                    count = count + 1
                    while not GPIO.input(19):
                        print("bluecorrect")
                    continue
                else:
                    print("You are wrong!")
                    GPIO.cleanup()
                    quit()
            elif not GPIO.input(23):
                if colours[count] == 1:
                    count = count + 1
                    while (not GPIO.input(23)):
                        print("redcorrect")
                    continue
                else:
                    print("You are wrong!")
                    GPIO.cleanup()
                    quit()
            elif not GPIO.input(40):
                if colours[count] == 2:
                    count = count + 1
                    while not GPIO.input(40):
                        print("greencorrect")
                    continue
                else:
                    print("You are wrong!")
                    GPIO.cleanup()
                    quit()
            else:
                continue
try:
    main()
except KeyboardInterrupt:
    GPIO.cleanup()
...