Esempio n. 1
0
def startProgramm(teamid):
    #Rennvorbereitung und Startsequenz
    activeCheckpoint = 1  #Checkpoint 1 ist der nächste Checkpoint nach dem Start
    x = time.time()  #Nur ein Platzhalter vom richtigen Datentyp
    rslt.showResults(0, teamid, x)
    sound.playSound(-3)
    sound.playSpeech(0, teamid)
    lit.playStartSequence()
    starttime = time.time()

    while teamid != 0:  #Schleife während des Rennens
        if cpl.checkpointReached(
                activeCheckpoint % 4
        ):  #Kontrolliert jeweils den nächsten Checkpoint nach dem zuletzt durchfahrenen, misst Zeiten, spielt Sounds und aktualisiert Zwischenergebnisse
            cpl.saveTime(starttime, activeCheckpoint % 4)
            _thread.start_new_thread(sound.playSound,
                                     (activeCheckpoint, teamid, starttime))
            rslt.showResults(activeCheckpoint, teamid, starttime)
            activeCheckpoint += 1
        if activeCheckpoint == 9:  #beendet das Rennen, speichert und zeigt Ergebnisse, spielt entsprechende Sounds & Sprache und resettet Checkpoints
            cpl.prepareDataForDB(teamid)
            rslt.showResults(9, teamid, starttime)
            lit.raceEnd()
            time.sleep(6)
            sound.playSpeech(9, teamid, starttime)
            activeCheckpoint = 1
            teamid = 0
            cpl.resetAll()
Esempio n. 2
0
def startProgramm():
    identified = False
    print("running")
    while identified == False:                                   #Loop solange kein Auto identifiziert ist
        teamid=1
        #teamid, identified = qr.readQRCode()                     #Wenn der Scan funktioniert hat, wird die teamid und ein True-Flag zurückgegeben
        identified = True
        if identified == True:                                   #Initialisiere Startsequenz sobald ein Auto erkannt wurde
            print("identified")
            #rslt.showResults(0, teamid, time.time())             #zeigt bisherige Ergebnisse des Teams an
            #sound.playSpeech(0, teamid)                          #erzählt infos zum Team
            fehlstart = lit.playStartSequence()                  #startet Ampel, Sounds und Fehlstartkontrolle
            if fehlstart:
                print("Fehlstart")
                break
    print("starttime")
    starttime = time.clock()                                          #startet die Zeitmessung unabhängig davon, ob das Auto zu spät los fährt
    activeCheckpoint = 1
    
    while identified == True:                                                   #Loop für Rennen, Messung etc.
        print("starting Race")
        if cpl.checkpointReached(activeCheckpoint % 4):
            cpl.saveTime(starttime, activeCheckpoint % 4)                       #speichert die LiveZeit vom aktuellen Checkpoint [0,1,2,3]
            _thread.start_new_thread(lit.startLightExpress,(activeCheckpoint))  #Ampel leuchtet, checkpointabhängig, läuft parallel
            _thread.start_new_thread(sound.playSound,(activeCheckpoint))        #Spielt parallel den Sound, checkpointabhängig [1...8]
            #_thread.start_new_thread(sound.playSpeech,(activeCheckpoint, teamid)) #spricht (parallel),checkpointabhängig [1...8],teamid?
            rslt.showResults(activeCheckpoint, teamid, starttime)                #Zeigt Ergebnisse
            activeCheckpoint += 1
        if activeCheckpoint == 9:                                               #beendet das Rennen, speichert und zeigt Ergebnisse
            cpl.prepareDataForDB(teamID)                                        #rechnet einzelne Zeiten aus und schreibt diese in die DB
            rslt.showResults(9, teamid)
            lit.raceEnd()
            print("Rennen beendet")
            break
Esempio n. 3
0
import light as lit
import RPi.GPIO as GPIO
lit.raceEnd()
GPIO.cleanup()
Esempio n. 4
0
            rslt.showResults(activeCheckpoint, teamid, starttime)
            activeCheckpoint += 1
        if activeCheckpoint == 9:  #beendet das Rennen, speichert und zeigt Ergebnisse, spielt entsprechende Sounds & Sprache und resettet Checkpoints
            cpl.prepareDataForDB(teamid)
            rslt.showResults(9, teamid, starttime)
            lit.raceEnd()
            time.sleep(6)
            sound.playSpeech(9, teamid, starttime)
            activeCheckpoint = 1
            teamid = 0
            cpl.resetAll()


try:
    teamid = 0
    while 1:
        teamid = qr.readQRCode(
        )  #Führt solange die QR-Code Funktion aus, bis diese ein Auto erkennt. Erfasst die TeamID
        if teamid != 0:
            startProgramm(
                teamid)  #Wurde ein Auto erkannt, wird die Rennlogik ausgeführt
            time.sleep(
                8
            )  #verhindert Probleme,wenn in zwei Threads SOunds abgespielt werden. Der Pi hat keine Mischfunktion und kann immer nur in einem Thread Sound ausgeben.
            sound.playSound(
                -4)  #signalisiert Bereitschaft zum erneuten Rennstart
except KeyboardInterrupt:  #Manueller Abbruch über die Konsole
    print("Programm aborted")
    lit.raceEnd()  #schaltet die LEDs aus und deinitialisiert diese
    cpl.GPIO.cleanup()  #resettet die GPIOs und gibt diese wieder frei
    pass