From acfe0e622e38a9daec254fe27f7ebbfb06a215b2 Mon Sep 17 00:00:00 2001 From: Rishikesh Lolapu <31lolapr@elmbrookstudents.org> Date: Thu, 23 Oct 2025 02:30:26 +0000 Subject: [PATCH] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py This is the new version of Hazmat Code with the colors. Check to see if your color is different. Only Run2 is different, it was white, now violet. --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 239 ++++---------------- 1 file changed, 38 insertions(+), 201 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index eb1542c..37a00a9 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -23,168 +23,13 @@ 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: @@ -200,6 +45,7 @@ async def monitor_distance(): # 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) @@ -336,49 +182,40 @@ async def Run6(): 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 +# Function to classify color based on HSV +async def main: + if reflected > 4: + if h < 4 or h > 350: #red + return "Red" + print('Running Mission 3') + await Run3() + elif 3 < h < 40 and s > 70: #orange + return "Orange" + print('Running Mission 6') + await Run6() + elif 47 < h < 56: #yellow + return "Yellow" + print('Running Mission 4') + await Run4() + elif 70 < h < 160: #green - do it vertically not horizontally for accuracy + return "Green" + print('Running Mission 1') + await Run1() + elif 210 < h < 225: #blue - do it vertically not horizontally for accuracy + return "Blue" + print('Running Mission 5') + await Run5() + elif 230 < h < 320: #purple + return "Purple" + print('Running Mission 2') + await Run2() else: - color_detected = Color.NONE - - await wait(1000) #prevent loop from iterating fast -# Main execution loop -run_task(main()) + return "Unknown" + +# Main loop +while True: + h, s, v = sensor.hsv() + reflected = sensor.reflection() + color = detect_color(h, s, v, reflected) + print(f"Detected Color: {color} (Hue: {h}, Sat: {s}, Val: {v})") + wait(1000)