Esempio n. 1
0
def main():
    kruispuntnr = 1
    einde = False   # True waarde nog te implementeren
    GPIO.setmode(GPIO.BOARD)

    # SPI-object maken voor afstandssensor
    CE = 0  # Eerste kanaal op ADC selecteren
    spi = spidev.SpiDev0(0, CE)
    spi.max_speed_hz = 1000000
    kanaal = 0  # Eerste analoge signaal

    # Kleurensensor initialiseren
    i2c = busio.I2C(5, 3)
    kleurensensor = Adafruit_TCS34725.TCS34725(i2c)

    # Server initialiseren
    server = Server.Server()

    last_error = 0  # Nodig voor de eerst keer volglijn uit te voeren
    while not einde:
        while True:
            # Manuele override
            message = server.listen()
            if message:
                last_error = 0
                break

            # Volg de lijn 10 keer
            for i in range(10):
                returnwaarde = lijninterpretatie()
                if returnwaarde == "stopstreep":
                    stopMotor()
                    kruispunt(kruispuntnr, kleurensensor, kanaal)
                    kruispuntnr += 1
                    last_error = 0  #Herinitialisatie van lijnvolgalgoritme
                else:
                    volglijn(returnwaarde)

            # Na 10 maal lijn te volgen, check de sensoren
            if adc.getAfstand(kanaal) < 15:
                stopMotor()
                while adc.getAfstand(kanaal) < 20:
                    pass

        #Bericht uitlezen
        while message != 'Ga door':
            if message == 'rechtdoor':
                forward(10)
                time.sleep(0.0000001)
                stopMotor()
                message = server.listen()
            elif  message == 'links':
                pass

            message = server.listen()

        raise Exception("Fout in de code.")
Esempio n. 2
0
def linksInslaan(kanaal):
    while zoeklijn():
        motor.forward(10)

    while not zoeklijn():
        motor.forward(30)
        while adc.getAfstand(kanaal) <= 12:
            motor.stopMotor()
        time.sleep(0.25)
        motor.turnLeftNinety()
        motor.forward(30)
        while adc.getAfstand(kanaal) <= 12:
            motor.stopMotor()
Esempio n. 3
0
def oversteken(kanaal):
    while zoeklijn():
        motor.forward(10)

    while not zoeklijn():

        motor.forward(30)

        while adc.getAfstand(kanaal) <= 12:
            motor.stopMotor()
Esempio n. 4
0
def kruispunt(nummer, kleurensensor, kanaal):
    # Wanneer rood
    while detectiekleuren(kleurensensor) == 'rood':
        pass

    # Wanneer groen
    if nummer == 1:  # Check op berichten halverwege algoritme

        while not zoeklijn():
            # Check op manuele override
            motor.forward(30)
            while adc.getAfstand(kanaal) <= 12:
                motor.stopMotor()

    elif nummer == 2:
        pass
    elif nummer == 3:
        pass
    elif nummer == 4:
        pass
    elif nummer == 5:
        pass
def main():
    kruispuntnr = 1
    einde = False   # True waarde nog te implementeren
    GPIO.setmode(GPIO.BOARD)

    # SPI-object maken voor afstandssensor
    CE = 0  # Eerste kanaal op ADC selecteren
    spi = spidev.SpiDev0(0, CE)
    spi.max_speed_hz = 1000000
    kanaal = 0  # Eerste analoge signaal

    # Kleurensensor initialiseren
    i2c = busio.I2C(5, 3)
    kleurensensor = adafruit_tcs34725.TCS34725(i2c)

    last_error = 0  # Nodig voor de eerst keer volglijn uit te voeren
    while not einde:
        #kijken of de server een bericht stuurt
        bericht = server.listen(timeout=0.01)

        #manuele override starten
        if bericht == "b'start'":
            kruispunt_reserve = kruispuntnr
            override = True

        while override == True:
            mess = server.listen(timeout=0.01)
            if mess is not None:
                message = mess
                print(mess)

                if mess == "b'vooruit'":
                    forward()
                    server.send('Vooruit.')
                elif mess == "b'achteruit'":
                    backwards()
                    server.send('Achteruit.')
                elif mess == "b'links'":
                    turnLeftNinety()
                    server.send('Links.')
                elif mess == "b'rechts'":
                    turnRightNinety()
                    server.send('Rechts.')


                #elif mess == "b'linksvooruit'":
                    #server.send('Linksvooruit.')
                #elif mess == "b'linksachteruit'":
                    #server.send('Linksachteruit')
                #elif mess == "b'rechtsvooruit'":
                    #server.send('Rechtsvooruit.')
                #elif mess == "b'rechtsachteruit'":
                    #server.send('Rechtsachteruit')

                #override beeïndigen
                elif mess[0:6] == "b'stop":
                    server.send('Succesvol gestopt.')
                    kruispunt_manueel = 0
                    cijfer = 0
                    print(mess[-3])
                    print(mess[-2])
                    try:
                        cijfer = int(mess[-3])
                        kruispunt_manueel += cijfer * 10
                    except:
                        None

                    cijfer = 0

                    try:
                        cijfer = int(mess[-2])
                        kruispunt_manueel += cijfer
                    except:
                        None

                    if kruispunt_manueel != 0:
                        kruispuntnr = kruispunt_manueel
                    else:
                        kruispuntnr = kruispunt_reserve
                    finaalBericht = str(kruispuntnr)
                    server.send('Kruispunt = ' + ' ' + finaalBericht)
                    override = False

                #als aan geen van voorgaande if-statements voldaan is, wordt de motor gestopt
                else:
                    stopMotor()


            #last_error = 0
            #break

            # Volg de lijn 10 keer
            for i in range(10):
                returnwaarde = lijninterpretatie()
                if returnwaarde == "stopstreep":
                    stopMotor()
                    kruispunt(kruispuntnr, kleurensensor, kanaal)
                    kruispuntnr += 1
                    last_error = 0  #Herinitialisatie van lijnvolgalgoritme
                else:
                    volglijn(returnwaarde)

            # Na 10 maal lijn te volgen, check de sensoren
            if adc.getAfstand(kanaal) < 15:
                stopMotor()
                while adc.getAfstand(kanaal) < 20:
                    pass


        raise Exception("Fout in de code.")