Skip to content

Commit

Permalink
Merge pull request #35 from IDATT1004-Team13-H2025/main
Browse files Browse the repository at this point in the history
Update branch
  • Loading branch information
martaron authored Nov 5, 2025
2 parents 162c622 + f3b22ff commit 68db7c8
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 34 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)

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

0 comments on commit 68db7c8

Please sign in to comment.