Lego Prosjekt 2 Kode

#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
from time import sleep
import random

# Variables/Definitions
ev3 = EV3Brick()
#Definerer motor kontroller. 
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

#Definerer Inputs fra eksterne sensorer, og knapper. Port 1 og 2. 
button = TouchSensor(Port.S1)
distanceSensor = UltrasonicSensor(Port.S2)

#Definerer DriveBase
robot = DriveBase(left_motor, right_motor, wheel_diameter = 56, axle_track=111)
robot.settings(straight_speed = 70, turn_rate = 150)
ev3.speaker.set_volume(50)

#Startvariablen, som gjør at koden vet om den skal kjøre eller vente. Boolean verdi. 
running = False

# Start up
ev3.speaker.say("Bernt is AWAKE!")
ev3.screen.print("Bernt is Ready for Action!")
sleep(1)

# Gjør slik at loopen kjører mens programmet er aktivt. Ellers stopper den etter en kjøring. 
while True: 
    # Button pressed gjør slik at programmet starter og stopper, boolean verdi. 
    if button.pressed(): 
        running = not running #Inverterer verdien fra linje 26, og gjør den true. 
        sleep(0.5) # debounce  
    
    while running: #Hoved loop, benytter while istedenfor if. 
        #While er mer praktisk i disse situasjonene, hvor den skal kjøre til den blir stoppet av en sensor eller lignende. 
        ev3.screen.clear()
        ev3.screen.print("Excercise 2")

        while running or distanceSensor.distance() : 
            robot.drive(150, 0) #Kjører med spesifik fart
            if distanceSensor.distance() < 100: #Hvis avstand er mindre enn gitt mm, gjør
                robot.stop() #Stanser motorene, og bremser. 
                sleep(0.5)
                angle = random.randint(-180,180) #Definerer "pathfinding" vinkler
                robot.turn(angle) #Snur roboten
                continue # Fortsetter loopen
            if button.pressed(): 
                running = not running #inverterer verdien til false
                robot.stop() 
                ev3.speaker.say("Excercise done") #Høytaller funksjon
                sleep(2) #debounce