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) 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) 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) <<<<<<< 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(): 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 SUCCESS_CHIME = 2 TA_DA = 3 POWER_UP = 4 RICKROLL_INSPIRED = 5 async def play_victory_fanfare(): """Classic victory fanfare""" notes = [ (330, 200), # E4 (330, 100), # E4 (330, 100), # E4 (440, 600), # A4 ] 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 = [ (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 = [ (cn["E4"], 150), (cn["Gs4"], 150), (cn["B4"], 300), ] for freq, duration in notes: await hub.speaker.beep(freq, duration) await wait(50) async def play_ta_da(): """Classic "ta-da!" sound""" notes = [ (cn["B3"], 200), # B4 (cn["E4"], 400), # E5 ] for freq, duration in notes: await hub.speaker.beep(freq, duration) await wait(100) async def play_power_up(): """Rising power-up sound""" 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(659.24, 200) async def play_rickroll_inspired(): """Fun 80s-style dance beat inspired sound""" # Upbeat bouncy rhythm pattern = [ (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.RICKROLL_INSPIRED): """ 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(): 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())