Skip to content

Commit

Permalink
Testet kjøring. Fungerer, men får en feilmelding etter at roboten har…
Browse files Browse the repository at this point in the history
… kjørt en stund
  • Loading branch information
robinsp committed Oct 30, 2025
1 parent efd44cb commit a930dd2
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 27 deletions.
12 changes: 6 additions & 6 deletions py/src/drive.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class Drive():
def __init__(self, motors: tuple, dimensions: tuple):
leftMotor, rightMotor = motors
wheelDiameter, axleTrack = dimensions


self.driveBase = DriveBase(leftMotor, rightMotor,
wheel_diameter=wheelDiameter, axle_track=axleTrack)
Expand All @@ -20,14 +20,14 @@ def forward(self, speed):
self.driveBase.drive(speed, 0)

def backward(self, speed):
self.driveBase.drive(speed, 0 )
self.driveBase.drive(-abs(speed), 0 )

def left(self, speed, angle):
def left(self, speed):
self.driveBase.drive(speed, 90)

def right(self, speed, angle):
self.driveBase.drive(speed, -90)
def right(self, speed):
self.driveBase.turn(90)

def stop(self, speed):
def stop(self, brakeType):
self.driveBase.drive(0,0)

12 changes: 5 additions & 7 deletions py/src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile


try:
from drive import Drive
from sensors import Sensors
Expand All @@ -23,17 +23,15 @@
# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.

dimensions = ( 20, # Wheel diamter
20 ) #Axle track
dimensions = ( 47, # Wheel diamter
140 ) #Axle track

motors = (Motor(port=Port.D), # Left motor for the drive base
Motor(port=Port.C)) # Right motor for the drive base

sensors = (ColorSensor(port=Port.S1), # Lyssensor for å måle fargen på jorda
UltrasonicSensor(port=Port.S4)) # Ultrasonisksensor for å sjekke for potensielle hindringer robotten må navigere unna
UltrasonicSensor(port=Port.S2)) # Ultrasonisksensor for å sjekke for potensielle hindringer robotten må navigere unna

robotDrive = Drive(motors, dimensions) # Robottens kjørefunksjonalitet
robotSensors = Sensors(sensors) # Robottens sensorfunksjonalitet

robot = Robot(robotDrive, robotSensors) # EV3 robot
robot = Robot(robotDrive, *sensors) # EV3 robot
robot.start()
36 changes: 29 additions & 7 deletions py/src/robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,42 @@

from drive import Drive
from sensors import Sensors
from sensors import UltraSonic

class Robot():
def __init__(self, drive: Drive, sensors: Sensors):
def __init__(self, drive: Drive, colorSensor, ultrasonicSensor):
self.hub = EV3Brick()
self.drive = drive
self.sensors = sensors
self.color = colorSensor
self.ultrasonic = ultrasonicSensor


def start(self):
self.speed = 150
self.drive.forward(self.speed)

def start(self, duration_ms = 5000):
self.drive.forward(50)
timer = StopWatch()
while timer.time() < duration_ms:
while True:
wait(50)

UltrasonicSensor = UltraSonic(Port.S2)

if UltrasonicSensor is None:
continue

self.stop()
if UltrasonicSensor.distanceLessThan(100):
self.drive.stop(0)
self.hub.speaker.beep()
wait(1000)
self.drive.backward(self.speed)
wait(1000)
self.drive.right(self.speed)
wait(1000)
self.drive.forward(self.speed)
wait(1000)
self.drive.right(self.speed)
wait(1000)
self.drive.forward(self.speed)


def stop(self):
self.drive.forward(0)
20 changes: 13 additions & 7 deletions py/src/sensors.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,19 @@ def __init__(self, sensorPort):
self.sensor = UltrasonicSensor(port=sensorPort)

def distanceLessThan(self, value):
if self.sensor.distance() < value:
return True
else:
return False


class Color():
try:
return self.sensor.distance() < value
except OSError:
# kort pause og ett nytt forsøk
wait(50)
try:
return self.sensor.distance() < value
except OSError:
# Logg/varsle, og anta "for nær" for sikkerhet
return True


class Color():
def __init__(self, sensorPort):
self.sensor = ColorSensor(port=sensorPort)

Expand Down

0 comments on commit a930dd2

Please sign in to comment.