Skip to content

Update branch #35

Merged
merged 4 commits into from
Nov 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)

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


try:
from drive import Drive
from sensors import Sensors
from robot import Robot

except Exception as e:
Expand All @@ -23,17 +22,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
sensors = (Port.S3, # Lyssensor for å måle fargen på jorda
Port.S1) # 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()
34 changes: 26 additions & 8 deletions py/src/robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,39 @@
from pybricks.media.ev3dev import SoundFile, ImageFile

from drive import Drive
from sensors import Sensors
from sensors import UltraSonic, Colour

class Robot():
def __init__(self, drive: Drive, sensors: Sensors):
def __init__(self, drive: Drive, colorPort, ultrsonicPort):
self.hub = EV3Brick()
self.drive = drive
self.sensors = sensors
self.color = Colour(colorPort)
self.ultrasonic = UltraSonic(ultrsonicPort)


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)



self.stop()
if self.ultrasonic.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)
24 changes: 13 additions & 11 deletions py/src/sensors.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@
GAMMEL SENSOR FUNKSJONALITET
BEHOLDES FREM TIL NY FUNKSJONALITET ER IMPLEMENTERT
"""
class Sensors():
def __init__(self, sensors: tuple):
self.color, self.ultrasonic = sensors



"""
Expand All @@ -27,13 +23,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 Colour():
def __init__(self, sensorPort):
self.sensor = ColorSensor(port=sensorPort)

Expand Down