From 684447c01aeaa6ef2d15f226bc9b355e2ba188da Mon Sep 17 00:00:00 2001 From: Vickram <31kapoov@elmbrookstudents.org> Date: Thu, 9 Oct 2025 00:19:33 +0000 Subject: [PATCH 1/9] Add final/2main.py --- final/2main.py | 113 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 final/2main.py diff --git a/final/2main.py b/final/2main.py new file mode 100644 index 0000000..7c0940d --- /dev/null +++ b/final/2main.py @@ -0,0 +1,113 @@ + +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 + + +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) + +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(275) + await drive_base.turn(20) + await drive_base.straight(63) + + await 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 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) + + +def main(): + if color_sensor.color() == Color.GREEN: + Run1() + + if color_sensor.color() == Color.WHITE: + Run2() + + if color_sensor.color() == Color.YELLOW: + Run3() + + if color_sensor.color() == Color.BLUE: + Run5() + + if color_sensor.color() == Color.RED: + Run6() + + print(f'Detected color: {color_sensor.color()}') + +# Main execution loop +while True: + main() + wait(100) From 227619df494b8fb3acd58522460037b27970830c Mon Sep 17 00:00:00 2001 From: Vickram <31kapoov@elmbrookstudents.org> Date: Thu, 9 Oct 2025 12:32:51 +0000 Subject: [PATCH 2/9] Add final/3main.py --- final/3main.py | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 final/3main.py diff --git a/final/3main.py b/final/3main.py new file mode 100644 index 0000000..5475bd3 --- /dev/null +++ b/final/3main.py @@ -0,0 +1,102 @@ +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 + +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 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: + detected_color = color_sensor.color(True) + + if detected_color == Color.GREEN: + print('Detected color: Green') + await Run1() + + elif detected_color == Color.WHITE: + print('Detected color: White') + await Run2() + + elif detected_color == Color.YELLOW: + print('Detected color: Yellow') + await Run3() + + elif detected_color == Color.BLUE: + print('Detected color: Blue') + await Run5() + + elif detected_color == Color.RED: + print('Detected color: Red') + await Run6() + + else: + print("None detected") + +# Main execution +run_task(main()) \ No newline at end of file From 0664a619b34236a84266ed13ed75c9263d5f58b6 Mon Sep 17 00:00:00 2001 From: Vickram <31kapoov@elmbrookstudents.org> Date: Thu, 9 Oct 2025 22:04:39 +0000 Subject: [PATCH 3/9] Add final/main4.py --- final/main4.py | 256 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 final/main4.py diff --git a/final/main4.py b/final/main4.py new file mode 100644 index 0000000..0e5ff3e --- /dev/null +++ b/final/main4.py @@ -0,0 +1,256 @@ +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) + +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(275) + await drive_base.turn(20) + await drive_base.straight(63) + + await 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 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) + +# 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""" + notes = [ + (262, 100), # C4 + (294, 100), # D4 + (330, 100), # E4 + (349, 100), # F4 + (392, 100), # G4 + (440, 100), # A4 + (494, 100), # B4 + (523, 300), # C5 + ] + + 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 main(): + """Use color sensor to select runs""" + print("Place colored object in front of sensor:") + print("RED=Run1, GREEN=Run2, BLUE=Run3, YELLOW=Test") + + + 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}') + + 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 5') + await Run5() + await celebrate_mission_complete(CelebrationSound.POWER_UP) + + elif color_detected == Color.RED: + print('Running Mission 6') + await Run6() + await celebrate_mission_complete(CelebrationSound.LEVEL_UP) + + else: + hub.light.off() + left_motor.stop() + right_motor.stop() + + await wait(100) #prevent loop from iterating fast + +# Main execution loop +run_task(main()) From c2204e71abe83cfc943406258d722bb29d8c2bb6 Mon Sep 17 00:00:00 2001 From: Vickram <31kapoov@elmbrookstudents.org> Date: Thu, 9 Oct 2025 22:57:18 +0000 Subject: [PATCH 4/9] Update final/main4.py --- final/main4.py | 162 +++++++++++++++++++++---------------------------- 1 file changed, 70 insertions(+), 92 deletions(-) diff --git a/final/main4.py b/final/main4.py index 0e5ff3e..d0302fa 100644 --- a/final/main4.py +++ b/final/main4.py @@ -9,82 +9,11 @@ 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) - -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(275) - await drive_base.turn(20) - await drive_base.straight(63) - - await 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 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) +color_sensor = ColorSensor(Port.F) +hub.speaker.volume(50) # Set the volume of the speaker # Celebration sound types class CelebrationSound: @@ -107,7 +36,6 @@ async def play_victory_fanfare(): for freq, duration in notes: await hub.speaker.beep(freq, duration) await wait(50) - async def play_level_up(): """Upward scale for level completion""" notes = [ @@ -124,7 +52,6 @@ async def play_level_up(): for freq, duration in notes: await hub.speaker.beep(freq, duration) await wait(20) - async def play_success_chime(): """Simple success notification""" notes = [ @@ -136,7 +63,6 @@ async def play_success_chime(): for freq, duration in notes: await hub.speaker.beep(freq, duration) await wait(50) - async def play_ta_da(): """Classic "ta-da!" sound""" notes = [ @@ -147,14 +73,12 @@ async def play_ta_da(): 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 @@ -167,7 +91,6 @@ async def play_rickroll_inspired(): 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. @@ -204,16 +127,78 @@ async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME): hub.light.off() -async def main(): - """Use color sensor to select runs""" - print("Place colored object in front of sensor:") - print("RED=Run1, GREEN=Run2, BLUE=Run3, YELLOW=Test") - +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 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) while True: await celebrate_mission_complete(CelebrationSound.LEVEL_UP) - color_reflected_percent = await color_sensor.reflection() print(color_reflected_percent) @@ -224,33 +209,26 @@ async def main(): 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 5') await Run5() await celebrate_mission_complete(CelebrationSound.POWER_UP) - elif color_detected == Color.RED: print('Running Mission 6') await Run6() await celebrate_mission_complete(CelebrationSound.LEVEL_UP) - else: hub.light.off() left_motor.stop() right_motor.stop() - await wait(100) #prevent loop from iterating fast - # Main execution loop run_task(main()) From a3e7be20d193a6da685e511e568636dbc56cd453 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Fri, 10 Oct 2025 20:03:09 +0000 Subject: [PATCH 5/9] Update final/main4.py --- final/main4.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/final/main4.py b/final/main4.py index d0302fa..c1c0b16 100644 --- a/final/main4.py +++ b/final/main4.py @@ -128,38 +128,47 @@ async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME): hub.light.off() async def Run1(): + # Brings both arms up while moving to first mission await multitask(left_arm.run_angle(1000, 300), right_arm.run_angle(1000,500)) await drive_base.straight(320) + # Slaps down "Silo" 3 times 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) + # Moves to the next mission, solving "Who lived here?" await drive_base.turn(-20) - await drive_base.straight(275) + await drive_base.straight(277) await drive_base.turn(20) - await drive_base.straight(63) + await drive_base.straight(65) + # Raises the right arm up slowly, before moving into position to solve "What's on Sale?" 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) + # Solves "What's on Sale?" 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) + + # Moves the robot back to base await drive_base.turn(35) - await drive_base.straight(-500) + await drive_base.straight(-600) async def Run2(): + # Drive robot to the front of "Forge" in preparation to solve "Heavy Lifting" await drive_base.straight(200) await drive_base.turn(-20) await drive_base.straight(525) await drive_base.turn(60) + # Throws "Heavy Lifting" to the side await drive_base.straight(50) await right_arm.run_angle(2000,1000) await drive_base.straight(-50) @@ -167,15 +176,22 @@ async def Run2(): await drive_base.straight(50) await right_arm.run_angle(350,-1000) + # Moves the robot back to base await drive_base.turn(-100) await drive_base.straight(-600) async def Run3(): + + # Runs robot to "Angler Artifacts" await drive_base.straight(915) await drive_base.turn(-90) + + # Solves "Angler Artifacts" await drive_base.straight(60) await left_arm.run_angle(10000,-15000) + + # Moves to the Red home area await drive_base.straight(-60) await drive_base.turn(85) await drive_base.straight(2000) From 3f37e7e2ff13f93057d6da12dbd0e467b5737b8e Mon Sep 17 00:00:00 2001 From: Vickram <31kapoov@elmbrookstudents.org> Date: Fri, 10 Oct 2025 20:05:31 +0000 Subject: [PATCH 6/9] Update final/main4.py --- final/main4.py | 149 ++++++++++++++++++++----------------------------- 1 file changed, 62 insertions(+), 87 deletions(-) diff --git a/final/main4.py b/final/main4.py index c1c0b16..7dc67cc 100644 --- a/final/main4.py +++ b/final/main4.py @@ -15,6 +15,64 @@ drive_base.use_gyro(True) color_sensor = ColorSensor(Port.F) hub.speaker.volume(50) # Set the volume of the speaker +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(275) + await drive_base.turn(20) + await drive_base.straight(63) + await 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 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) # Celebration sound types class CelebrationSound: VICTORY_FANFARE = 0 @@ -126,92 +184,8 @@ async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME): await wait(100) hub.light.off() - -async def Run1(): - # Brings both arms up while moving to first mission - await multitask(left_arm.run_angle(1000, 300), right_arm.run_angle(1000,500)) - await drive_base.straight(320) - - # Slaps down "Silo" 3 times - 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) - - # Moves to the next mission, solving "Who lived here?" - await drive_base.turn(-20) - await drive_base.straight(277) - await drive_base.turn(20) - await drive_base.straight(65) - - # Raises the right arm up slowly, before moving into position to solve "What's on Sale?" - 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) - # Solves "What's on Sale?" - 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) - - # Moves the robot back to base - await drive_base.turn(35) - await drive_base.straight(-600) - -async def Run2(): - # Drive robot to the front of "Forge" in preparation to solve "Heavy Lifting" - await drive_base.straight(200) - await drive_base.turn(-20) - await drive_base.straight(525) - await drive_base.turn(60) - - # Throws "Heavy Lifting" to the side - 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) - - # Moves the robot back to base - await drive_base.turn(-100) - await drive_base.straight(-600) - - -async def Run3(): - - # Runs robot to "Angler Artifacts" - await drive_base.straight(915) - await drive_base.turn(-90) - - # Solves "Angler Artifacts" - await drive_base.straight(60) - await left_arm.run_angle(10000,-15000) - - # Moves to the Red home area - await drive_base.straight(-60) - await drive_base.turn(85) - await drive_base.straight(2000) - - -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) @@ -246,5 +220,6 @@ async def Run6(): left_motor.stop() right_motor.stop() await wait(100) #prevent loop from iterating fast + # Main execution loop -run_task(main()) +run_task(main()) \ No newline at end of file From 8ea7cd55f3aaf0c91de71ed5f5de9629d2299790 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Fri, 10 Oct 2025 20:23:39 +0000 Subject: [PATCH 7/9] Update final/main4emaj.py --- final/{main4.py => main4emaj.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename final/{main4.py => main4emaj.py} (100%) diff --git a/final/main4.py b/final/main4emaj.py similarity index 100% rename from final/main4.py rename to final/main4emaj.py From 75e64da4b09301946e640eb3aedffa66c5c2d9d7 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Fri, 10 Oct 2025 20:27:18 +0000 Subject: [PATCH 8/9] Update final/main4emaj.py --- final/main4emaj.py | 49 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/final/main4emaj.py b/final/main4emaj.py index 7dc67cc..cbe0254 100644 --- a/final/main4emaj.py +++ b/final/main4emaj.py @@ -85,10 +85,10 @@ class CelebrationSound: async def play_victory_fanfare(): """Classic victory fanfare""" notes = [ - (262, 200), # C4 - (262, 200), # C4 - (262, 200), # C4 - (349, 600), # F4 + (330, 200), # E4 + (330, 100), # E4 + (330, 100), # E4 + (440, 600), # A4 ] for freq, duration in notes: @@ -97,14 +97,22 @@ async def play_victory_fanfare(): async def play_level_up(): """Upward scale for level completion""" notes = [ - (262, 100), # C4 - (294, 100), # D4 - (330, 100), # E4 - (349, 100), # F4 - (392, 100), # G4 - (440, 100), # A4 - (494, 100), # B4 - (523, 300), # C5 + (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: @@ -113,9 +121,9 @@ async def play_level_up(): async def play_success_chime(): """Simple success notification""" notes = [ - (523, 150), # C5 - (659, 150), # E5 - (784, 300), # G5 + (659, 150), # E5 + (830, 150), # G♯5 + (987, 300), # B♭5 ] for freq, duration in notes: @@ -124,8 +132,8 @@ async def play_success_chime(): async def play_ta_da(): """Classic "ta-da!" sound""" notes = [ - (392, 200), # G4 - (523, 400), # C5 + (494, 200), # B♭4 + (659, 400), # E5 ] for freq, duration in notes: @@ -141,10 +149,11 @@ 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), + (494, 200), (554, 200), (622, 200), (659, 200), + (554, 200), (494, 200), (439, 200), (494, 300), + (554, 200), (494, 200), (439, 200), (416, 400), ] + for freq, duration in pattern: await hub.speaker.beep(freq, duration) From bb76258f58b06af11fda825dcc8a68f3204145af Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Fri, 10 Oct 2025 20:56:52 +0000 Subject: [PATCH 9/9] Update final/main4emaj.py --- final/main4emaj.py | 94 +++++++++++++++++++++++++++++++++------------- 1 file changed, 67 insertions(+), 27 deletions(-) diff --git a/final/main4emaj.py b/final/main4emaj.py index cbe0254..5335147 100644 --- a/final/main4emaj.py +++ b/final/main4emaj.py @@ -15,6 +15,36 @@ drive_base.use_gyro(True) color_sensor = ColorSensor(Port.F) hub.speaker.volume(50) # Set the volume of the speaker +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 +} + + + async def Run1(): left_arm.run_angle(1000, 300) right_arm.run_angle(1000,500) @@ -51,6 +81,7 @@ async def Run2(): 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(): @@ -97,23 +128,24 @@ async def play_victory_fanfare(): async def play_level_up(): """Upward scale for level completion""" 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) @@ -121,10 +153,11 @@ async def play_level_up(): async def play_success_chime(): """Simple success notification""" notes = [ - (659, 150), # E5 - (830, 150), # G♯5 - (987, 300), # B♭5 + (cn["E4"], 150), + (cn["Gs4"], 150), + (cn["B4"], 300), ] + for freq, duration in notes: await hub.speaker.beep(freq, duration) @@ -132,8 +165,8 @@ async def play_success_chime(): async def play_ta_da(): """Classic "ta-da!" sound""" notes = [ - (494, 200), # B♭4 - (659, 400), # E5 + (cn["B3"], 200), # B4 + (cn["E4"], 400), # E5 ] for freq, duration in notes: @@ -141,24 +174,31 @@ async def play_ta_da(): 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 = [ - (494, 200), (554, 200), (622, 200), (659, 200), - (554, 200), (494, 200), (439, 200), (494, 300), - (554, 200), (494, 200), (439, 200), (416, 400), + (cn["B3"], 200), (cn["Cs4"], 200), (cn["Ds4"], 200), (cn["E4"], 200), + (cn["Cs4"], 200), (cn["B3"], 200), (cn["A3"], 200), (cn["B3"], 300), + (cn["Cs4"], 200), (cn["B3"], 200), (cn["A3"], 200), (cn["Gs3"], 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): +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.