6 Commits

Author SHA1 Message Date
d3294bcb0b SCRIMMAGE MERGE!!!
Reviewed-on: #15
yayyyyyyyyyy
2025-10-11 02:30:26 +00:00
5ba2811af3 Merge pull request 'Updated LICENSE and README' (#12) from dev into main
Reviewed-on: #12
2025-10-09 21:16:08 +00:00
387e00b5c3 Merge branch 'dev' 2025-10-09 13:00:26 -05:00
3fdd6ae9d1 Merge to main for Scrimmage 2025-10-09 12:01:36 -05:00
ee0b8eb6a0 Update README.md 2025-09-10 13:28:54 +00:00
a745ed8c79 Merge pull request 'WIP - Test Merge ( dev to main )' (#1) from dev into main
Reviewed-on: #1
2025-09-02 02:32:19 +00:00
25 changed files with 229 additions and 2140 deletions

View File

@@ -1,33 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30)
await right_arm.run_angle(5000,3000)
await drive_base.straight(40)
await right_arm.run_angle(5000,-4000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-670)
run_task(main())

View File

@@ -1,42 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch, run_task, multitask
hub = PrimeHub()
# Initialize both motors. In this example, the motor on the
# left must turn counterclockwise to make the robot go forward.
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
arm_motor = Motor(Port.D, Direction.CLOCKWISE)
arm_motor_left= Motor(Port.C, Direction.CLOCKWISE)
# Initialize the drive base. In this example, the wheel diameter is 56mm.
# The distance between the two wheel-ground contact points is 112mm.
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
print('The default settings are: ' + str(drive_base.settings()))
drive_base.settings(300,1000,300,750)
# Optionally, uncomment the line below to use the gyro for improved accuracy.
drive_base.use_gyro(True)
async def main():
await drive_base.straight(519)
await arm_motor_left.run_angle(-10000, 300)
await arm_motor_left.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await arm_motor.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(135)
await drive_base.straight(50)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(-100)
await drive_base.turn(-54)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(200)
await arm_motor.run_angle(10000, 10000)
run_task(main())

View File

@@ -1,227 +0,0 @@
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.tools import run_task, multitask
from pybricks.tools import wait, StopWatch
from pybricks.robotics import DriveBase
from pybricks.hubs import PrimeHub
# Initialize hub and devices
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C)
right_arm = Motor(Port.D)
lazer_ranger = UltrasonicSensor(Port.E)
color_sensor = ColorSensor(Port.F)
# DriveBase configuration
WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels)
AXLE_TRACK = 180 # mm (distance between wheels)
drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK)
drive_base.settings(600, 500, 300, 200)
drive_base.use_gyro(True)
WALL_DISTANCE = 300 # mm
async def drive_forward():
"""Drive forward continuously using DriveBase."""
drive_base.drive(400, 0)
async def monitor_distance():
"""Monitor ultrasonic sensor and stop when wall is detected."""
while True:
distance = await lazer_ranger.distance()
print('Distancing...',distance)
if distance < WALL_DISTANCE:
# Stop the drivebase
await drive_base.stop
print(f"Wall detected at {distance}mm!")
break
# Small delay to prevent overwhelming the sensor
await wait(50)
# New Section
async def Run1(): # From M8_5.py
left_arm.run_angle(1000, -300)
right_arm.run_angle(1000, 500)
await drive_base.straight(320)
await right_arm.run_angle(5000, -500, Stop.HOLD)
await right_arm.run_angle(5000, 500, Stop.HOLD)
await right_arm.run_angle(5000, -500, Stop.HOLD)
await right_arm.run_angle(5000, 500, Stop.HOLD)
await right_arm.run_angle(5000, -500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50, 500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000, 450)
await drive_base.straight(-145)
await left_arm.run_angle(1000, -450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-600)
async def Run2(): # From Heavy_lifting_final.py
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30)
await right_arm.run_angle(5000, 2900)
await drive_base.straight(40)
await right_arm.run_angle(5000, -4000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-670)
async def Run3(): # tip the scale.py
left_arm.run_angle(600,-200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-70)
await drive_base.straight(900)
await drive_base.turn(115)
await drive_base.straight(75)
await drive_base.straight(33)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(66)
await drive_base.straight(7)
await left_arm.run_angle(560,390) #going down
print('turning now...')
await drive_base.turn(40) # turning right
await left_arm.run_angle(410,-400) #lift a little bit
await drive_base.straight(80)
await drive_base.turn(-41) #ma din din din dun 67 41 21 69
await drive_base.straight(900)
async def Run4(): # From Send_Over_Final.py
#Get to mission
await drive_base.straight(920)
await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65)
#Solve mission
drive_base.turn(-10)
await left_arm.run_angle(10000, 4000)
#Get to Red Start
await drive_base.straight(-110)
await drive_base.turn(90)
# while True:
# distance_mm = await lazer_ranger.distance()
# print('distancing...',distance_mm)
# if distance_mm < 300:
# drive_base.stop
# break
# else:
# drive_base.straight(300)
# print('running...')
# await wait(10)
await multitask(
drive_forward(),
monitor_distance()
)
# Add Rishi's code here
async def Run5():
await drive_base.straight(519)
await left_arm.run_angle(-10000, 300)
await left_arm.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await right_arm.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(120)
await drive_base.straight(25)
await right_arm.run_angle(10000, -3000)
await drive_base.straight(-110)
await drive_base.turn(-43)
await right_arm.run_angle(10000, -3000)
await drive_base.straight(295)
await right_arm.run_angle(10000, 9000)
await drive_base.straight(-65)
await drive_base.turn(45)
await drive_base.straight(175)
await drive_base.turn(24.5)
await drive_base.straight(-100)
await right_arm.run_angle(10000, -8500)
await drive_base.straight(100)
await right_arm.run_angle(10000, 3500)
await drive_base.turn(-30)
await drive_base.straight(-300)
await drive_base.turn(-80)
await drive_base.straight(-700)
# Add - Adi's code here
async def Run6():
await drive_base.straight(750)
await drive_base.straight(-650)
# Function to classify color based on HSV
def detect_color(h, s, v, reflected):
if reflected > 4:
if h < 4 or h > 350: # red
return "Red"
elif 3 < h < 40 and s > 70: # orange
return "Orange"
elif 47 < h < 56: # yellow
return "Yellow"
elif 70 < h < 160: # green - do it vertically not horizontally for accuracy
return "Green"
elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy
return "Blue"
elif 260 < h < 350: # purple
return "Purple"
else:
return "Unknown"
return "Unknown"
async def main():
while True:
h, s, v = await color_sensor.hsv()
reflected = await color_sensor.reflection()
color = detect_color(h, s, v, reflected)
if color == "Red":
print('Running Mission 3')
await Run3() #red
elif color == "Orange":
print('Running Mission 6')
await Run6() #orange
elif color == "Yellow":
print('Running Mission 4')
await Run4() #yellow
elif color == "Green":
print('Running Mission 1')
await Run1() #green - vertically
elif color == "Blue":
print('Running Mission 5')
await Run5() #blue - vertically
elif color == "Purple":
print('Running Mission 2')
await Run2() #purple - vertically
else:
print(f"Unknown color detected (Hue: {h}, Sat: {s}, Val: {v})")
await wait(10)
# Run the main function
run_task(main())

View File

@@ -1,33 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
#await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30)
await right_arm.run_angle(5000,2900)
await drive_base.straight(40)
await right_arm.run_angle(5000,-4000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-670)
run_task(main())

View File

@@ -1,49 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
left_arm.run_angle(1000, 300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-600)
run_task(main())

View File

@@ -1,46 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
lazer_ranger = UltrasonicSensor(Port.E)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
#Get to mission
await drive_base.straight(920)
await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65)
#Solve mission
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
#Get to Red Start
await drive_base.straight(-110)
await drive_base.turn(90)
await drive_base.straight(500)
while True:
distance_mm = await lazer_ranger.distance()
print('distancing...',distance_mm)
if distance_mm < 300:
drive_base.stop
break
else:
drive_base.straight(300)
print('running...')
await wait(10)
run_task(main())

View File

@@ -1,384 +0,0 @@
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.tools import run_task, multitask
from pybricks.tools import wait, StopWatch
from pybricks.robotics import DriveBase
from pybricks.hubs import PrimeHub
# Initialize hub and devices
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C)
right_arm = Motor(Port.D)
lazer_ranger = UltrasonicSensor(Port.E)
color_sensor = ColorSensor(Port.F)
# DriveBase configuration
WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels)
AXLE_TRACK = 180 # mm (distance between wheels)
drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
# Color Settings
# https://docs.pybricks.com/en/latest/parameters/color.html
print("Default Detected Colors:", color_sensor.detectable_colors())
# Custom color Hue, Saturation, Brightness value for Lego bricks
Color.MAGENTA = Color(300,100,100)
Color.VIOLET = Color(277,68,32)
Color.BLUE = Color(240,100,100)
Color.CYAN = Color(180,100,100)
LEGO_BRICKS_COLOR = [
Color.BLUE,
Color.GREEN,
Color.WHITE,
Color.RED,
Color.YELLOW,
Color.MAGENTA,
Color.VIOLET,
Color.NONE
]
#Update Detectable colors
color_sensor.detectable_colors(LEGO_BRICKS_COLOR)
print("Updated Detected Colors:", color_sensor.detectable_colors())
hub.speaker.volume(50) # Set the volume of the speaker
# Celebration sound types
class CelebrationSound:
VICTORY_FANFARE = 0
LEVEL_UP = 1
SUCCESS_CHIME = 2
TA_DA = 3
POWER_UP = 4
RICKROLL_INSPIRED = 5
async def play_victory_fanfare():
"""Classic victory fanfare"""
notes = [
(262, 200), # C4
(262, 200), # C4
(262, 200), # C4
(349, 600), # F4
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_level_up():
"""Upward scale for level completion"""
notesold = [
(262, 100), # C4
(294, 100), # D4
(330, 100), # E4
(349, 100), # F4
(392, 100), # G4
(440, 100), # A4
(494, 100), # B4
(523, 300), # C5
]
notes = [
(277, 100),
(330, 100),
(277, 100),
(554, 100),
(277, 100),
(413, 100),
(330, 100),
(277, 100),
(413, 100),
(277, 100),
(554, 100),
(413, 100),
(277, 100),
(413, 100),
(554, 100),
(413, 100)
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
#await wait(20)
async def play_success_chime():
"""Simple success notification"""
notes = [
(523, 150), # C5
(659, 150), # E5
(784, 300), # G5
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_ta_da():
"""Classic "ta-da!" sound"""
notes = [
(392, 200), # G4
(523, 400), # C5
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(100)
async def play_power_up():
"""Rising power-up sound"""
for freq in range(200, 800, 50):
await hub.speaker.beep(freq, 50)
await wait(10)
await hub.speaker.beep(1000, 200)
async def play_rickroll_inspired():
"""Fun 80s-style dance beat inspired sound"""
# Upbeat bouncy rhythm
pattern = [
(392, 200), (440, 200), (494, 200), (523, 200),
(440, 200), (392, 200), (349, 200), (392, 300),
(440, 200), (392, 200), (349, 200), (330, 400),
]
for freq, duration in pattern:
await hub.speaker.beep(freq, duration)
await wait(50)
async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
"""
Main celebration function to call after completing a mission.
Plays a sound and shows light animation.
Args:
sound_type: CelebrationSound enum value (default: SUCCESS_CHIME)
"""
# Light show
hub.light.on(Color.GREEN)
# Play the selected celebration sound
if sound_type == CelebrationSound.VICTORY_FANFARE:
await play_victory_fanfare()
elif sound_type == CelebrationSound.LEVEL_UP:
await play_level_up()
elif sound_type == CelebrationSound.SUCCESS_CHIME:
await play_success_chime()
elif sound_type == CelebrationSound.TA_DA:
await play_ta_da()
elif sound_type == CelebrationSound.POWER_UP:
await play_power_up()
elif sound_type == CelebrationSound.RICKROLL_INSPIRED:
await play_rickroll_inspired()
else:
await play_success_chime() # Default fallback
# Blink the light
for _ in range(3):
hub.light.off()
await wait(100)
hub.light.on(Color.GREEN)
await wait(100)
hub.light.off()
WALL_DISTANCE = 200 # mm
async def drive_forward():
"""Drive forward continuously using DriveBase."""
#await drive_base.straight(5000)
drive_base.drive(400,0)
async def monitor_distance():
"""Monitor ultrasonic sensor and stop when wall is detected."""
while True:
distance = await lazer_ranger.distance()
print('distancing...',distance)
if distance < WALL_DISTANCE:
# Stop the drivebase
await drive_base.turn(-180)
drive_base.brake
print(f"Wall detected at {distance}mm!")
break
# Small delay to prevent overwhelming the sensor
await wait(50)
async def Run1(): #From M8_5.py
left_arm.run_angle(1000, 300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-600)
async def Run2(): #From Heavy_lifting_final.py
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30)
await right_arm.run_angle(5000,2900)
await drive_base.straight(40)
await right_arm.run_angle(5000,-4000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-670)
async def Run3(): #tip the scale.py
left_arm.run_angle(600,200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-70)
await drive_base.straight(900)
await drive_base.turn(115)
await drive_base.straight(75)
await drive_base.straight(33)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(66)
await drive_base.straight(7)
await left_arm.run_angle(560,-390) #going down
await drive_base.turn(40) # turning right
await left_arm.run_angle(-410,-400) #lift a little bit
await drive_base.turn(-46.5) #ma din din din dun
await drive_base.turn(-40)
await drive_base.straight(900)
async def Run4(): #From Send_Over_Final.py
#Get to mission
await drive_base.straight(920)
await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65)
#Solve mission
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
#Get to Red Start
await drive_base.straight(-110)
await drive_base.turn(90)
await drive_base.straight(500)
# while True:
# distance_mm = await lazer_ranger.distance()
# print('distancing...',distance_mm)
# if distance_mm < 300:
# drive_base.stop
# break
# else:
# drive_base.straight(300)
# print('running...')
# await wait(10)
await multitask(
drive_forward(),
monitor_distance()
)
#Add Rishi's code here
async def Run5():
await drive_base.straight(519)
await left_arm.run_angle(-10000, 300)
await left_arm.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await right_arm.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(135)
await drive_base.straight(25)
await right_arm.run_angle(10000, -3000)
await drive_base.straight(-100)
await drive_base.turn(-55)
await right_arm.run_angle(10000, -3000)
await drive_base.straight(250)
await drive_base.turn(-5)
await right_arm.run_angle(10000, 7000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(100)
await drive_base.turn(37)
await right_arm.run_angle(10000, -6000)
await drive_base.straight(90)
await right_arm.run_angle(3000, 3000)
await drive_base.turn(-40)
#Add - Adi's code here
async def Run6():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def main():
while True:
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
color_reflected_percent = await color_sensor.reflection()
print(color_reflected_percent)
if color_reflected_percent > 0: # Make sure we actually have color reflections before checking for color
color_detected = await color_sensor.color() # Moved this inside the if clause
print(f'Detected color:{color_detected} : {color_detected.h}, {color_detected.s}, {color_detected.v}')
if color_detected == Color.GREEN:
print('Running Mission 1')
await Run1()
#await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
elif color_detected == Color.WHITE:
print('Running Mission 2')
await Run2()
#await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
elif color_detected == Color.RED:
print('Running Mission 3')
await Run3()
#await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME )
elif color_detected == Color.YELLOW:
print('Running Mission 4')
await Run4()
#await celebrate_mission_complete(CelebrationSound.POWER_UP)
elif color_detected == Color.BLUE:
print('Running Mission 5')
await Run5()
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
elif color_detected == Color.VIOLET:
print('Running Mission 6')
await Run6()
else:
hub.light.off()
left_motor.stop()
right_motor.stop()
color_detected = Color.NONE
else:
color_detected = Color.NONE
await wait(1000) #prevent loop from iterating fast
# Main execution loop
run_task(main())

View File

@@ -1,227 +0,0 @@
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.tools import run_task, multitask
from pybricks.tools import wait, StopWatch
from pybricks.robotics import DriveBase
from pybricks.hubs import PrimeHub
# Initialize hub and devices
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C)
right_arm = Motor(Port.D)
lazer_ranger = UltrasonicSensor(Port.E)
color_sensor = ColorSensor(Port.F)
# DriveBase configuration
WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels)
AXLE_TRACK = 180 # mm (distance between wheels)
drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK)
drive_base.settings(600, 500, 300, 200)
drive_base.use_gyro(True)
WALL_DISTANCE = 300 # mm
async def drive_forward():
"""Drive forward continuously using DriveBase."""
drive_base.drive(400, 0)
async def monitor_distance():
"""Monitor ultrasonic sensor and stop when wall is detected."""
while True:
distance = await lazer_ranger.distance()
print('Distancing...',distance)
if distance < WALL_DISTANCE:
# Stop the drivebase
await drive_base.stop
print(f"Wall detected at {distance}mm!")
break
# Small delay to prevent overwhelming the sensor
await wait(50)
# New Section
async def Run1(): # From M8_5.py
left_arm.run_angle(1000, -300)
right_arm.run_angle(1000, 500)
await drive_base.straight(320)
await right_arm.run_angle(5000, -500, Stop.HOLD)
await right_arm.run_angle(5000, 500, Stop.HOLD)
await right_arm.run_angle(5000, -500, Stop.HOLD)
await right_arm.run_angle(5000, 500, Stop.HOLD)
await right_arm.run_angle(5000, -500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50, 500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000, 450)
await drive_base.straight(-145)
await left_arm.run_angle(1000, -450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-600)
async def Run2(): # From Heavy_lifting_final.py
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30)
await right_arm.run_angle(5000, 2900)
await drive_base.straight(40)
await right_arm.run_angle(5000, -4000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-670)
async def Run3(): # tip the scale.py
left_arm.run_angle(600,-200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-70)
await drive_base.straight(900)
await drive_base.turn(115)
await drive_base.straight(75)
await drive_base.straight(33)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(66)
await drive_base.straight(7)
await left_arm.run_angle(560,390) #going down
print('turning now...')
await drive_base.turn(40) # turning right
await left_arm.run_angle(410,-400) #lift a little bit
await drive_base.straight(80)
await drive_base.turn(-41) #ma din din din dun 67 41 21 69
await drive_base.straight(900)
async def Run4(): # From Send_Over_Final.py
#Get to mission
await drive_base.straight(920)
await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65)
#Solve mission
drive_base.turn(-10)
await left_arm.run_angle(10000, 4000)
#Get to Red Start
await drive_base.straight(-110)
await drive_base.turn(90)
# while True:
# distance_mm = await lazer_ranger.distance()
# print('distancing...',distance_mm)
# if distance_mm < 300:
# drive_base.stop
# break
# else:
# drive_base.straight(300)
# print('running...')
# await wait(10)
await multitask(
drive_forward(),
monitor_distance()
)
# Add Rishi's code here
async def Run5():
await drive_base.straight(519)
await left_arm.run_angle(-10000, 300)
await left_arm.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await right_arm.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(120)
await drive_base.straight(25)
await right_arm.run_angle(10000, -3000)
await drive_base.straight(-110)
await drive_base.turn(-43)
await right_arm.run_angle(10000, -3000)
await drive_base.straight(295)
await right_arm.run_angle(10000, 9000)
await drive_base.straight(-65)
await drive_base.turn(45)
await drive_base.straight(175)
await drive_base.turn(24.5)
await drive_base.straight(-100)
await right_arm.run_angle(10000, -8500)
await drive_base.straight(100)
await right_arm.run_angle(10000, 3500)
await drive_base.turn(-30)
await drive_base.straight(-300)
await drive_base.turn(-80)
await drive_base.straight(-700)
# Add - Adi's code here
async def Run6():
await drive_base.straight(750)
await drive_base.straight(-650)
# Function to classify color based on HSV
def detect_color(h, s, v, reflected):
if reflected > 4:
if h < 4 or h > 350: # red
return "Red"
elif 3 < h < 40 and s > 70: # orange
return "Orange"
elif 47 < h < 56: # yellow
return "Yellow"
elif 70 < h < 160: # green - do it vertically not horizontally for accuracy
return "Green"
elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy
return "Blue"
elif 260 < h < 350: # purple
return "Purple"
else:
return "Unknown"
return "Unknown"
async def main():
while True:
h, s, v = await color_sensor.hsv()
reflected = await color_sensor.reflection()
color = detect_color(h, s, v, reflected)
if color == "Red":
print('Running Mission 3')
await Run3() #red
elif color == "Orange":
print('Running Mission 6')
await Run6() #orange
elif color == "Yellow":
print('Running Mission 4')
await Run4() #yellow
elif color == "Green":
print('Running Mission 1')
await Run1() #green - vertically
elif color == "Blue":
print('Running Mission 5')
await Run5() #blue - vertically
elif color == "Purple":
print('Running Mission 2')
await Run2() #purple - vertically
else:
print(f"Unknown color detected (Hue: {h}, Sat: {s}, Val: {v})")
await wait(10)
# Run the main function
run_task(main())

View File

@@ -1,42 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(300,1000,300,200)
#drive_base.use_gyro(True)
async def main():
left_arm.run_angle(500,200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-55)
await drive_base.straight(900)
await drive_base.turn(92.5)
await drive_base.straight(75)
await drive_base.straight(21)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(55)
await left_arm.run_angle(300,-400)
await drive_base.turn(46.5)
await drive_base.turn(-40)
await drive_base.straight(900)
run_task(main())

View File

@@ -86,19 +86,11 @@ async def Run2():
await drive_base.straight(-600)
async def Run3():
await drive_base.straight(920)
<<<<<<< HEAD:final/4main.py
await drive_base.turn(-90)
await drive_base.straight(60)
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
await drive_base.straight(-110)
=======
await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65)
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
await drive_base.straight(-100)
>>>>>>> Vickram_dev_:final/main4.py
await drive_base.turn(90)
await drive_base.straight(2000)
async def Run5():

View File

@@ -1,280 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor
from pybricks.parameters import Port, Stop, Color, Direction
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch, multitask, run_task
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C)#, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(550,700,100,100)
drive_base.use_gyro(True)
color_sensor = ColorSensor(Port.F)
Color.ORANGE = Color(37, 85, 95)
Color.BLUE = Color(230,100,100)
color_sensor.detectable_colors([Color.ORANGE, Color.BLUE, Color.GREEN, Color.WHITE, Color.RED, Color.YELLOW])
hub.speaker.volume(50) # Set the volume of the speaker
color_sensor.detectable_colors()
# Celebration sound types
class CelebrationSound:
VICTORY_FANFARE = 0
LEVEL_UP = 1
SUCCESS_CHIME = 2
TA_DA = 3
POWER_UP = 4
RICKROLL_INSPIRED = 5
async def play_victory_fanfare():
"""Classic victory fanfare"""
notes = [
(262, 200), # C4
(262, 200), # C4
(262, 200), # C4
(349, 600), # F4
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_level_up():
"""Upward scale for level completion"""
notesold = [
(262, 100), # C4
(294, 100), # D4
(330, 100), # E4
(349, 100), # F4
(392, 100), # G4
(440, 100), # A4
(494, 100), # B4
(523, 300), # C5
]
notes = [
(277, 100),
(330, 100),
(277, 100),
(554, 100),
(277, 100),
(413, 100),
(330, 100),
(277, 100),
(413, 100),
(277, 100),
(554, 100),
(413, 100),
(277, 100),
(413, 100),
(554, 100),
(413, 100)
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
#await wait(20)
async def play_success_chime():
"""Simple success notification"""
notes = [
(523, 150), # C5
(659, 150), # E5
(784, 300), # G5
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_ta_da():
"""Classic "ta-da!" sound"""
notes = [
(392, 200), # G4
(523, 400), # C5
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(100)
async def play_power_up():
"""Rising power-up sound"""
for freq in range(200, 800, 50):
await hub.speaker.beep(freq, 50)
await wait(10)
await hub.speaker.beep(1000, 200)
async def play_rickroll_inspired():
"""Fun 80s-style dance beat inspired sound"""
# Upbeat bouncy rhythm
pattern = [
(392, 200), (440, 200), (494, 200), (523, 200),
(440, 200), (392, 200), (349, 200), (392, 300),
(440, 200), (392, 200), (349, 200), (330, 400),
]
for freq, duration in pattern:
await hub.speaker.beep(freq, duration)
await wait(50)
async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
"""
Main celebration function to call after completing a mission.
Plays a sound and shows light animation.
Args:
sound_type: CelebrationSound enum value (default: SUCCESS_CHIME)
"""
# Light show
hub.light.on(Color.GREEN)
# Play the selected celebration sound
if sound_type == CelebrationSound.VICTORY_FANFARE:
await play_victory_fanfare()
elif sound_type == CelebrationSound.LEVEL_UP:
await play_level_up()
elif sound_type == CelebrationSound.SUCCESS_CHIME:
await play_success_chime()
elif sound_type == CelebrationSound.TA_DA:
await play_ta_da()
elif sound_type == CelebrationSound.POWER_UP:
await play_power_up()
elif sound_type == CelebrationSound.RICKROLL_INSPIRED:
await play_rickroll_inspired()
else:
await play_success_chime() # Default fallback
# Blink the light
for _ in range(3):
hub.light.off()
await wait(100)
hub.light.on(Color.GREEN)
await wait(100)
hub.light.off()
async def Run1():
await multitask(left_arm.run_angle(1000, 300), right_arm.run_angle(1000,500))
await drive_base.straight(320)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(275)
await drive_base.turn(20)
await drive_base.straight(63)
await multitask(drive_base.turn(-30), right_arm.run_angle(50,500))
await drive_base.turn(45)
await drive_base.straight(-135)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-500)
async def Run2():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.turn(-100)
await drive_base.straight(-600)
async def Run3():
await drive_base.straight(915)
await drive_base.turn(-90)
await drive_base.straight(60)
await left_arm.run_angle(10000,-15000)
await drive_base.straight(-60)
await drive_base.turn(85)
await drive_base.straight(2000)
async def Run4():
await drive_base.straight(519)
await arm_motor_left.run_angle(-10000, 300)
await arm_motor_left.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await arm_motor.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(135)
await drive_base.straight(50)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(-100)
await drive_base.turn(-54)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(250)
await drive_base.turn(-5)
await arm_motor.run_angle(10000, 7000)
await drive_base.straight(-50)
await drive_base.turn(68)
await arm_motor.run_angle(10000, -6000)
await drive_base.straight(200)
await arm_motor.run_angle(10000, 4000)
await drive_base.turn(-40)
await arm_motor.run_angle(10000, 7000)
async def Run5():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def Run6():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def main():
while True:
await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
color_reflected_percent = await color_sensor.reflection()
print(color_reflected_percent)
color_detected = await color_sensor.color()
print(f'Detected color: {color_detected.h}, {color_detected.s}, {color_detected.v}')
if color_reflected_percent > 0:
if color_detected == Color.GREEN:
print('Running Mission 1')
await Run1()
await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
elif color_detected == Color.WHITE:
print('Running Mission 2')
await Run2()
await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
elif color_detected == Color.YELLOW:
print('Running Mission 3')
await Run3()
await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME )
elif color_detected == Color.BLUE:
print('Running Mission 4')
await Run4()
await celebrate_mission_complete(CelebrationSound.POWER_UP)
elif color_detected == Color.RED:
print('Running Mission 5')
await Run5()
await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
else:
hub.light.off()
left_motor.stop()
right_motor.stop()
await wait(1000) #prevent loop from iterating fast
# Main execution loop
run_task(main())

View File

@@ -1,2 +0,0 @@
Hi I'm Rishi, the coding manager for Team: 65266
I love coding and making things that probably end the world.

View File

@@ -1,27 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task,multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(880,850,700,700)
drive_base.use_gyro(True)
first_run = True
async def main():
await drive_base.straight(750)
await drive_base.straight(-650)
run_task(main())

View File

@@ -1,33 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30)
await right_arm.run_angle(5000,3000)
await drive_base.straight(40)
await right_arm.run_angle(5000,-4000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-670)
run_task(main())

View File

@@ -1,37 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
await right_arm.run_angle(2000,1000)
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(30)
await right_arm.run_angle(2000,-1000)
await drive_base.straight(30)
await right_arm.run_angle(3000,1000)
await drive_base.straight(-60)
await drive_base.turn(-60)
await drive_base.straight(-525)
await drive_base.turn(20)
await drive_base.straight(-200)

View File

@@ -1,36 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
#Get to mission
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
#Solve mission
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
#Return home
await drive_base.straight(-100)
await drive_base.turn(-100)
await drive_base.straight(-600)
run_task(main())

View File

@@ -1,34 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.turn(-100)
await drive_base.straight(-600)
run_task(main())

View File

@@ -20,10 +20,10 @@ drive_base.use_gyro(True)
async def main():
await drive_base.straight(500)
await right_arm.run_angle(300,100)
await drive_base.straight(-100)
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
run_task(main())

View File

@@ -1,29 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task,multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(400,500,100,100)
drive_base.use_gyro(True)
async def main():
await drive_base.straight(500)
await right_arm.run_angle(300,100)
await drive_base.straight(-100)
await right_arm.run_angle(300,-100)
await drive_base.straight(-350)
run_task(main())

View File

@@ -23,9 +23,9 @@ async def main():
await drive_base.straight(915)
await drive_base.turn(-90)
await drive_base.straight(60)
await left_arm.run_angle(10000,-4000)
await drive_base.straight(-90)
await drive_base.turn(80)
await left_arm.run_angle(10000,-15000)
await drive_base.straight(-60)
await drive_base.turn(85)
await drive_base.straight(2000)
run_task(main())

View File

@@ -1,46 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
lazer_ranger = UltrasonicSensor(Port.E)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
#Get to mission
await drive_base.straight(920)
await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65)
#Solve mission
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
#Get to Red Start
await drive_base.straight(-110)
await drive_base.turn(90)
await drive_base.straight(500)
while True:
distance_mm = await lazer_ranger.distance()
print('distancing...',distance_mm)
if distance_mm < 300:
drive_base.stop
break
else:
drive_base.straight(300)
print('running...')
await wait(10)
run_task(main())

View File

@@ -1,50 +0,0 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch, run_task, multitask
hub = PrimeHub()
# Initialize both motors. In this example, the motor on the
# left must turn counterclockwise to make the robot go forward.
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
arm_motor = Motor(Port.D, Direction.CLOCKWISE)
arm_motor_left= Motor(Port.C, Direction.CLOCKWISE)
# Initialize the drive base. In this example, the wheel diameter is 56mm.
# The distance between the two wheel-ground contact points is 112mm.
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
print('The default settings are: ' + str(drive_base.settings()))
drive_base.settings(300,1000,300,750)
# Optionally, uncomment the line below to use the gyro for improved accuracy.
drive_base.use_gyro(True)
async def main():
await drive_base.straight(519)
await arm_motor_left.run_angle(-10000, 300)
await arm_motor_left.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await arm_motor.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(135)
await drive_base.straight(50)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(-100)
await drive_base.turn(-54)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(250)
await drive_base.turn(-5)
await arm_motor.run_angle(10000, 7000)
await drive_base.straight(-50)
await drive_base.turn(68)
await arm_motor.run_angle(10000, -6000)
await drive_base.straight(200)
await arm_motor.run_angle(10000, 4000)
await drive_base.turn(-40)
await arm_motor.run_angle(10000, 7000)
run_task(main())

View File

@@ -39,7 +39,4 @@ async def main():
await drive_base.turn(46.5)
await drive_base.turn(-40)
await drive_base.straight(900)
run_task(main())
run_task(main())

View File

@@ -1,303 +0,0 @@
# Stuff from 10/15/2025
# Atharv trying with no avail to add more colors to the color sensor logic 😭😭😭😭😭😭😭
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor
from pybricks.parameters import Port, Stop, Color, Direction
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch, multitask, run_task
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C)#, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(550,700,100,100)
drive_base.use_gyro(True)
color_sensor = ColorSensor(Port.F)
Color.ORANGE = Color(28, 61, 61)
Color.BLUE = Color(230,100,100)
Color.YELLOW = Color(37, 85, 95)
Color.PURPLE = Color(326, 60, 87)
color_sensor.detectable_colors([Color.ORANGE, Color.BLUE, Color.GREEN, Color.WHITE, Color.RED, Color.YELLOW, Color.NONE, Color.PURPLE])
hub.speaker.volume(50) # Set the volume of the speaker
color_sensor.detectable_colors()
# Celebration sound types
class CelebrationSound:
VICTORY_FANFARE = 0
LEVEL_UP = 1
SUCCESS_CHIME = 2
TA_DA = 3
POWER_UP = 4
RICKROLL_INSPIRED = 5
async def play_victory_fanfare():
"""Classic victory fanfare"""
notes = [
(262, 200), # C4
(262, 200), # C4
(262, 200), # C4
(349, 600), # F4
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_level_up():
"""Upward scale for level completion"""
notesold = [
(262, 100), # C4
(294, 100), # D4
(330, 100), # E4
(349, 100), # F4
(392, 100), # G4
(440, 100), # A4
(494, 100), # B4
(523, 300), # C5
]
notes = [
(277, 100),
(330, 100),
(277, 100),
(554, 100),
(277, 100),
(413, 100),
(330, 100),
(277, 100),
(413, 100),
(277, 100),
(554, 100),
(413, 100),
(277, 100),
(413, 100),
(554, 100),
(413, 100)
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
#await wait(20)
async def play_success_chime():
"""Simple success notification"""
notes = [
(523, 150), # C5
(659, 150), # E5
(784, 300), # G5
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_ta_da():
"""Classic "ta-da!" sound"""
notes = [
(392, 200), # G4
(523, 400), # C5
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(100)
async def play_power_up():
"""Rising power-up sound"""
for freq in range(200, 800, 50):
await hub.speaker.beep(freq, 50)
await wait(10)
await hub.speaker.beep(1000, 200)
async def play_rickroll_inspired():
"""Fun 80s-style dance beat inspired sound"""
# Upbeat bouncy rhythm
pattern = [
(392, 200), (440, 200), (494, 200), (523, 200),
(440, 200), (392, 200), (349, 200), (392, 300),
(440, 200), (392, 200), (349, 200), (330, 400),
]
for freq, duration in pattern:
await hub.speaker.beep(freq, duration)
await wait(50)
async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
"""
Main celebration function to call after completing a mission.
Plays a sound and shows light animation.
Args:
sound_type: CelebrationSound enum value (default: SUCCESS_CHIME)
"""
# Light show
hub.light.on(Color.GREEN)
# Play the selected celebration sound
if sound_type == CelebrationSound.VICTORY_FANFARE:
await play_victory_fanfare()
elif sound_type == CelebrationSound.LEVEL_UP:
await play_level_up()
elif sound_type == CelebrationSound.SUCCESS_CHIME:
await play_success_chime()
elif sound_type == CelebrationSound.TA_DA:
await play_ta_da()
elif sound_type == CelebrationSound.POWER_UP:
await play_power_up()
elif sound_type == CelebrationSound.RICKROLL_INSPIRED:
await play_rickroll_inspired()
else:
await play_success_chime() # Default fallback
# Blink the light
for _ in range(3):
hub.light.off()
await wait(100)
hub.light.on(Color.GREEN)
await wait(100)
hub.light.off()
async def Run1():
left_arm.run_angle(1000, -300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000, 450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,-450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-700)
async def Run2():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.straight(-100)
await drive_base.turn(-100)
await drive_base.straight(-750)
async def Run3():
await drive_base.straight(920)
await drive_base.turn(-90)
await drive_base.straight(60)
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
await drive_base.straight(-110)
await drive_base.turn(90)
await drive_base.straight(2000)
async def Run4():
await drive_base.straight(519)
await drive_base.straight(519)
await arm_motor_left.run_angle(-10000, 300)
await arm_motor_left.run_angle(10000, 600)
await drive_base.straight(160)
await drive_base.turn(-30)
await drive_base.straight(50)
await arm_motor.run_angle(3000, 3000)
await drive_base.straight(-150)
await drive_base.turn(135)
await drive_base.straight(50)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(-100)
await drive_base.turn(-54)
await arm_motor.run_angle(10000, -3000)
await drive_base.straight(250)
await drive_base.turn(-5)
await arm_motor.run_angle(10000, 7000)
await drive_base.straight(-50)
await drive_base.turn(68)
await arm_motor.run_angle(10000, -6000)
await drive_base.straight(200)
await arm_motor.run_angle(10000, 4000)
await drive_base.turn(-40)
await arm_motor.run_angle(10000, 7000)
async def Run5():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def Run6():
left_arm.run_angle(500,200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-55)
await drive_base.straight(900)
await drive_base.turn(92.5)
await drive_base.straight(75)
await drive_base.straight(21)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(55)
await left_arm.run_angle(300,-400)
await drive_base.turn(46.5)
await drive_base.turn(-40)
await drive_base.straight(900)
async def main():
while True:
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
color_reflected_percent = await color_sensor.reflection()
print(color_reflected_percent)
color_detected = await color_sensor.color()
print(f'Detected color: {color_detected.h}, {color_detected.s}, {color_detected.v}')
if color_reflected_percent > 1:
if color_detected == Color.GREEN:
print('Running Mission 1')
await Run1()
#await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
elif color_detected == Color.WHITE:
print('Running Mission 2')
await Run2()
#await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
elif color_detected == Color.YELLOW:
print('Running Mission 3')
await Run3()
#await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME )
elif color_detected == Color.BLUE:
print('Running Mission 4')
await Run4()
#await celebrate_mission_complete(CelebrationSound.POWER_UP)
elif color_detected == Color.ORANGE:
print('Running Mission 5')
await Run5()
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
elif color_detected == Color.PURPLE:
print('Running Mission 6 (this is ayaan\'s code)')
await Run6()
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
else:
hub.light.off()
left_motor.stop()
right_motor.stop()
await wait(1000) #prevent loop from iterating fast
# Main execution loop
run_task(main())

View File

@@ -1,9 +1,11 @@
# Imports... because we kinda need them...
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor
from pybricks.parameters import Port, Stop, Color, Direction
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch, multitask, run_task
# Sets all the default values for the runs
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
@@ -15,72 +17,198 @@ drive_base.use_gyro(True)
color_sensor = ColorSensor(Port.F)
Color.ORANGE = Color(37, 85, 95)
Color.BLUE = Color(230,100,100)
Color.YELLOW = Color(37, 85, 95)
color_sensor.detectable_colors([Color.ORANGE, Color.BLUE, Color.GREEN, Color.WHITE, Color.RED, Color.YELLOW])
Color.YELLOW = Color(53, 75, 84)
color_sensor.detectable_colors([Color.YELLOW, Color.BLUE, Color.GREEN, Color.WHITE, Color.RED, Color.ORANGE, Color.NONE])
hub.speaker.volume(50) # Set the volume of the speaker
color_sensor.detectable_colors()
# Notes to hertz for nice music
cn = {
"Cs3": 138.59,
"D3": 146.83,
"Ds3": 155.56,
"E3": 164.81,
"F3": 174.61,
"Fs3": 185.00,
"G3": 196.00,
"Gs3": 207.65,
"A3": 220.00,
"As3": 233.08,
"B3": 246.94,
"C4": 261.63,
"Cs4": 277.18,
"D4": 293.66,
"Ds4": 311.13,
"E4": 329.63,
"F4": 349.23,
"Fs4": 369.99,
"G4": 392.00,
"Gs4": 415.30,
"A4": 440.00,
"As4": 466.16,
"B4": 493.88,
"C5": 523.25,
"Cs5": 554.37
}
# RUNS - contains the mission code that will be executed on color sensor detection
async def Run1():
left_arm.run_angle(1000, 300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-600)
async def Run2():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.straight(-100)
await drive_base.turn(-100)
await drive_base.straight(-600)
async def Run3():
await drive_base.straight(920)
await drive_base.turn(-90)
await drive_base.straight(60)
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
await drive_base.straight(-110)
await drive_base.turn(90)
await drive_base.straight(2000)
async def Run4():
await drive_base.straight(519)
await left_arm.run_angle(300, -100)
await left_arm.run_angle(300, 500)
await drive_base.straight(180)
await drive_base.turn(-37)
await drive_base.straight(50)
await right_arm.run_angle(300, -400)
await drive_base.straight(-150)
await drive_base.turn(125)
await drive_base.straight(50)
await right_arm.run_angle(300, 400)
await drive_base.straight(-75)
await right_arm.run_angle(300, 300)
await drive_base.turn(-40)
await drive_base.straight(250)
await right_arm.run_angle(100, -300)
await drive_base.straight(30)
await right_arm.run_angle(50,-250)
await drive_base.turn(30)
await drive_base.straight(-200)
await drive_base.turn(-50)
await drive_base.straight(-800)
async def Run5():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def Run6():
left_arm.run_angle(500,200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-55)
await drive_base.straight(900)
await drive_base.turn(92.5)
await drive_base.straight(75)
await drive_base.straight(21)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.straight(-20)
await drive_base.turn(55)
await left_arm.run_angle(300,-400)
await drive_base.turn(70)
await left_arm.run_angle(300,400)
await drive_base.turn(-60)
await drive_base.straight(900)
# Celebration sound types
class CelebrationSound:
VICTORY_FANFARE = 0
LEVEL_UP = 1
WAITING_SOUND = 1
SUCCESS_CHIME = 2
TA_DA = 3
POWER_UP = 4
RICKROLL_INSPIRED = 5
# Sounds functions
async def play_victory_fanfare():
"""Classic victory fanfare"""
notes = [
(262, 200), # C4
(262, 200), # C4
(262, 200), # C4
(349, 600), # F4
(cn["B3"], 200),
(cn["B3"], 100),
(cn["B3"], 100),
(cn["E4"], 600)
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(50)
async def play_level_up():
"""Upward scale for level completion"""
notesold = [
(262, 100), # C4
(294, 100), # D4
(330, 100), # E4
(349, 100), # F4
(392, 100), # G4
(440, 100), # A4
(494, 100), # B4
(523, 300), # C5
]
async def play_waiting_sound():
# T3rm1na1 V3l0c1ty arpeggio recreated in pybricks
notes = [
(277, 100),
(330, 100),
(277, 100),
(554, 100),
(277, 100),
(413, 100),
(330, 100),
(277, 100),
(413, 100),
(277, 100),
(554, 100),
(413, 100),
(277, 100),
(413, 100),
(554, 100),
(413, 100)
(cn["Cs4"], 100),
(cn["E4"], 100),
(cn["Cs4"], 100),
(cn["Cs5"], 100),
(cn["Cs4"], 100),
(cn["Gs4"], 100),
(cn["E4"], 100),
(cn["Cs4"], 100),
(cn["Gs4"], 100),
(cn["Cs4"], 100),
(cn["Cs5"], 100),
(cn["Gs4"], 100),
(cn["Cs4"], 100),
(cn["Gs4"], 100),
(cn["Cs5"], 100),
(cn["Gs4"], 100)
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
#await wait(20)
async def play_success_chime():
"""Simple success notification"""
notes = [
(523, 150), # C5
(659, 150), # E5
(784, 300), # G5
(cn["E4"], 150),
(cn["Gs4"], 150),
(cn["B4"], 300),
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
@@ -88,32 +216,49 @@ async def play_success_chime():
async def play_ta_da():
"""Classic "ta-da!" sound"""
notes = [
(392, 200), # G4
(523, 400), # C5
(cn["Cs4"], 200),
(cn["Ds4"], 200),
(cn["E4"], 200),
(cn["Ds4"], 200),
(cn["E4"], 200),
(cn["Fs4"], 400),
(cn["Gs4"], 600),
(cn["Fs4"], 400),
(cn["Gs4"], 200),
(cn["A4"], 200),
(cn["B4"], 200),
(cn["C5"], 200),
(cn["Cs5"], 200)
]
for freq, duration in notes:
await hub.speaker.beep(freq, duration)
await wait(100)
#await wait(100)
async def play_power_up():
"""Rising power-up sound"""
for freq in range(200, 800, 50):
frequencies = [
164.81, 207.65, 246.94, 329.63, 415.30, 493.88
]
for freq in frequencies:
await hub.speaker.beep(freq, 50)
await wait(10)
await hub.speaker.beep(1000, 200)
await hub.speaker.beep(659.24, 200)
async def play_rickroll_inspired():
"""Fun 80s-style dance beat inspired sound"""
# Upbeat bouncy rhythm
pattern = [
(392, 200), (440, 200), (494, 200), (523, 200),
(440, 200), (392, 200), (349, 200), (392, 300),
(440, 200), (392, 200), (349, 200), (330, 400),
]
pattern = [ (cn["B3"], 100), (cn["Cs4"], 100), (cn["Ds4"], 100), (cn["E4"], 100), (cn["Cs4"], 100), (cn["B3"], 100), (cn["A3"], 100), (cn["B3"], 200), (cn["Cs4"], 100), (cn["B3"], 100), (cn["A3"], 100), (cn["Gs3"], 200), ]
for freq, duration in pattern:
await hub.speaker.beep(freq, duration)
await wait(50)
async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
#await wait(50)
# Basically a big if else statement that calls the functions above
async def celebrate_mission_complete(sound_type=CelebrationSound.RICKROLL_INSPIRED):
"""
Main celebration function to call after completing a mission.
Plays a sound and shows light animation.
@@ -127,8 +272,8 @@ async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
# Play the selected celebration sound
if sound_type == CelebrationSound.VICTORY_FANFARE:
await play_victory_fanfare()
elif sound_type == CelebrationSound.LEVEL_UP:
await play_level_up()
elif sound_type == CelebrationSound.WAITING_SOUND:
await play_waiting_sound()
elif sound_type == CelebrationSound.SUCCESS_CHIME:
await play_success_chime()
elif sound_type == CelebrationSound.TA_DA:
@@ -149,133 +294,48 @@ async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
hub.light.off()
async def Run1():
left_arm.run_angle(1000, -300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000, 450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,-450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-700)
async def Run2():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.straight(-100)
await drive_base.turn(-100)
await drive_base.straight(-750)
async def Run3():
await drive_base.straight(920)
await drive_base.turn(-90)
await drive_base.straight(60)
drive_base.turn(-10)
await left_arm.run_angle(10000,-4000)
await drive_base.straight(-110)
await drive_base.turn(90)
await drive_base.straight(2000)
async def Run4():
await drive_base.straight(519)
await left_arm.run_angle(300, -200)
await left_arm.run_angle(800, 1000)
await drive_base.straight(180)
await drive_base.turn(-37)
await right_arm.run_angle(300, -50)
await drive_base.straight(50)
await right_arm.run_angle(300, -350)
await drive_base.straight(-150)
await drive_base.turn(125)
await drive_base.straight(50)
await right_arm.run_angle(300, 400)
await drive_base.straight(-75)
await right_arm.run_angle(300, -200)
await drive_base.turn(-40)
await right_arm.run_angle(300, 250)
await drive_base.straight(260)
await right_arm.run_angle(100, -300)
await drive_base.straight(30)
await right_arm.run_angle(50,-250)
await drive_base.turn(30)
await drive_base.straight(-200)
await drive_base.turn(-67)
await drive_base.straight(-800)
async def Run5():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def Run6():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
# This where everything happens
async def main():
# MAIN LOOP
while True:
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
color_reflected_percent = await color_sensor.reflection()
print(color_reflected_percent)
print(f"Color reflection percentage: {color_reflected_percent}")
color_detected = await color_sensor.color()
print(f'Detected color: {color_detected.h}, {color_detected.s}, {color_detected.v}')
if color_reflected_percent > 1:
print(f'Detected color: {color_detected}')
hsv = await color_sensor.hsv()
print(f"Measured HSV: {hsv}")
if color_reflected_percent > 0:
if color_detected == Color.GREEN:
print('Running Mission 1')
await Run1()
#await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
elif color_detected == Color.WHITE:
print('Running Mission 2')
await Run2()
#await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
elif color_detected == Color.YELLOW:
print('Running Mission 3')
await Run3()
#await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME )
elif color_detected == Color.BLUE:
await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME)
elif color_detected == Color.ORANGE:
print('Running Mission 4')
await Run4()
#await celebrate_mission_complete(CelebrationSound.POWER_UP)
elif color_detected == Color.RED:
await celebrate_mission_complete(CelebrationSound.POWER_UP)
elif color_detected == Color.BLUE:
print('Running Mission 5')
await Run5()
#await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
await celebrate_mission_complete(CelebrationSound.POWER_UP)
elif color_detected == Color.RED:
print('Running Mission 6')
await Run6()
await celebrate_mission_complete(CelebrationSound.TA_DA)
else:
hub.light.off()
left_motor.stop()
right_motor.stop()
await wait(1000) #prevent loop from iterating fast
# Main execution loop
run_task(main())
else:
print("No color was detected.")
await wait(100) # prevent loop from iterating fast
run_task(main())