From e02c0a55919bca376e157de5c93b0b125684813c Mon Sep 17 00:00:00 2001 From: Atharv Nagavarapu <30nagava@elmbrookstudents.org> Date: Mon, 15 Dec 2025 13:35:06 +0000 Subject: [PATCH] Add diagnostics/ColorSensorDiagnostics.py --- diagnostics/ColorSensorDiagnostics.py | 49 +++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 diagnostics/ColorSensorDiagnostics.py diff --git a/diagnostics/ColorSensorDiagnostics.py b/diagnostics/ColorSensorDiagnostics.py new file mode 100644 index 0000000..a10e8be --- /dev/null +++ b/diagnostics/ColorSensorDiagnostics.py @@ -0,0 +1,49 @@ +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 + +hub = PrimeHub() +class ColorSensorDiagnostics: + def __init__(self): + self.colorsensor = None + self.port_map = { + "A": Port.A, + "B": Port.B, + "C": Port.C, + "D": Port.D, + "E": Port.E, + "F": Port.F, + } + def initializeColorSensor(self): + valid_ports = {"A", "B", "C", "D", "E", "F"} + while True: + colorinput = input( + "This will test your color sensor.\n" + "Enter the port for the color sensor you would like to test (A, B, C, D, E, or F): " + ).strip().upper() + if colorinput not in valid_ports: + print("Invalid port. Please enter A-F.") + continue + try: + if self.colorsensor is None: + self.colorsensor = ColorSensor(self.port_map[colorinput]) + print(f"Color Sensor initialized on port {colorinput}.") + else: + print(f"Reusing existing color sensor on port {colorinput}.") + break + + except OSError as e: + if e.errno == 16: # EBUSY + print(f"Port {colorinput} is already in use. Reusing existing color sensor.") + break + else: + print(f"Error initializing color sensor on port {colorinput}: {e}") + print("Make sure a color sensor is actually connected to this port.") + self.colorsensor = None + self.colorsensor.detectable_colors(Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.WHITE, Color.NONE) + def printOutput(self): + while True: + print("HSV output:", self.colorsensor.hsv) + print("Detected color:", self.colorsensor.color())