From 8489a87ada087afdeac69e3f5efb19176faa4878 Mon Sep 17 00:00:00 2001 From: alkadienePhoton Date: Wed, 21 Jan 2026 16:49:54 -0600 Subject: [PATCH 1/4] --- diagnostics/HubDiagnostics.py | 17 +++++------------ diagnostics/OtherFunctions.py | 3 ++- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/diagnostics/HubDiagnostics.py b/diagnostics/HubDiagnostics.py index 9bdf436..ee5113f 100644 --- a/diagnostics/HubDiagnostics.py +++ b/diagnostics/HubDiagnostics.py @@ -1,13 +1,13 @@ from pybricks.tools import wait, StopWatch -from pybricks.parameters import Port from pybricks import version import OtherFunctions as debug import usys - +print("Pybricks version information:", version) +print("MicroPython information:", usys.implementation) +print("MicroPython version:", usys.version) class HubDiagnostics: def __init__(self, hub): - self.hub = hub self.port_map = { "A": Port.A, "B": Port.B, @@ -16,20 +16,13 @@ class HubDiagnostics: "E": Port.E, "F": Port.F, } - def printAbout(self): - print("Pybricks version information:", version) - print("MicroPython information:", usys.implementation) - print("MicroPython version:", usys.version) def testLightSources(self, verbose): v = verbose self.hub.display.off() for x in range(5): for y in range(5): debug.log(f"Turning on pixel at position {x}, {y}...", v) - self.hub.display.pixel(x, y, brightness=100) + display.pixel(x, y, brightness=100) wait(100) debug.log(f"Turning off pixel at position {x}, {y}...", v) - self.hub.display.pixel(x, y, brightness=0) - def printAll(self): - self.printAbout() - self.testLightSources(False) + display.pixel(x, y, brightness=0) diff --git a/diagnostics/OtherFunctions.py b/diagnostics/OtherFunctions.py index e5670f6..a7638a9 100644 --- a/diagnostics/OtherFunctions.py +++ b/diagnostics/OtherFunctions.py @@ -1,3 +1,4 @@ -def log(string, verbose): +verbose = True +def log(string): if(verbose): print("[LOG (verbose)]", string) -- 2.49.1 From fab9650a9f02105e814912f4c27466a7c351c115 Mon Sep 17 00:00:00 2001 From: Atharv Nagavarapu <30nagava@elmbrookstudents.org> Date: Thu, 22 Jan 2026 18:30:18 +0000 Subject: [PATCH 2/4] Add templates/color-sensor-start-logic.py --- templates/color-sensor-start-logic.py | 62 +++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 templates/color-sensor-start-logic.py diff --git a/templates/color-sensor-start-logic.py b/templates/color-sensor-start-logic.py new file mode 100644 index 0000000..2f59291 --- /dev/null +++ b/templates/color-sensor-start-logic.py @@ -0,0 +1,62 @@ +from pybricks.pupdevices import ColorSensor +from pybricks.parameters import Color, Port +from pybricks.tools import run_task +from pybricks.tools import wait +from pybricks.hubs import PrimeHub +hub = PrimeHub() +color_sensor = ColorSensor(Port.F) # Change the port to your color sensor's port +# 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 - your brick should approach from the top for accuracy + return "Green" + elif 195 < h < 198: # light blue + return "Light_Blue" + elif 210 < h < 225: # blue - your brick should approach from the top 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 == "Green": + print('Running Task 1') + # Run a function with await Function() here + elif color == "Red": + print('Running Task 2') + # Run a function with await Function() here + elif color == "Yellow": + print('Running Task 3') + # Run a function with await Function() here + elif color == "Blue": + print('Running Task 4') + # Run a function with await Function() here + elif color == "Orange": + print('Running Task 5') + # Run a function with await Function() here + elif color == "Purple": + print('Running Task 6') + # Run a function with await Function() here + elif color == "Light_Blue": + print("Running Task 7") + # Run a function with await Function() here + else: + print(f"Unknown color detected (Hue: {h}, Sat: {s}, Val: {v})") + #pass + await wait(10) +# Run the main function +run_task(main()) \ No newline at end of file -- 2.49.1 From c8b520c12c22e856f2aa829ac59241ae67e34197 Mon Sep 17 00:00:00 2001 From: Atharv Nagavarapu <30nagava@elmbrookstudents.org> Date: Thu, 22 Jan 2026 20:29:11 +0000 Subject: [PATCH 3/4] Add templates/xboxcontroller.py --- templates/xboxcontroller.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 templates/xboxcontroller.py diff --git a/templates/xboxcontroller.py b/templates/xboxcontroller.py new file mode 100644 index 0000000..978e69f --- /dev/null +++ b/templates/xboxcontroller.py @@ -0,0 +1,18 @@ +from pybricks.pupdevices import Motor +from pybricks.parameters import Button, Direction, Port, Side, Stop +from pybricks.tools import run_task, multitask +from pybricks.tools import wait, StopWatch +from pybricks.robotics import DriveBase +from pybricks.iodevices import XboxController +from pybricks.hubs import PrimeHub +hub = PrimeHub() +testmotor = Motor(Port.C) +async def main(): + while True: + if(Button.UP in buttons.pressed()): + testmotor.run(500) + else: + testmotor.stop() + await wait(10) +# Run the main function +run_task(main()) \ No newline at end of file -- 2.49.1 From 6beeb837cfd285a8c7907118a38693ab4725951e Mon Sep 17 00:00:00 2001 From: alkadienePhoton Date: Thu, 22 Jan 2026 16:25:09 -0600 Subject: [PATCH 4/4] Fixed everything, final commit before 1.0.0 --- diagnostics/FullDiagnostics.py | 13 ++++++++--- diagnostics/HubDiagnostics.py | 31 +++++++++++++++++++-------- diagnostics/MicroPythonDiagnostics.py | 11 ++++++++++ diagnostics/OtherFunctions.py | 3 +-- 4 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 diagnostics/MicroPythonDiagnostics.py diff --git a/diagnostics/FullDiagnostics.py b/diagnostics/FullDiagnostics.py index 12d5adb..c403fe8 100644 --- a/diagnostics/FullDiagnostics.py +++ b/diagnostics/FullDiagnostics.py @@ -8,10 +8,12 @@ from BatteryDiagnostics import BatteryDiagnostics from MotorDiagnostics import MotorDiagnostics from ColorSensorDiagnostics import ColorSensorDiagnostics from DriveBaseDiagnostics import DriveBaseDiagnostics +from HubDiagnostics import HubDiagnostics battery = BatteryDiagnostics(HUB) motor = MotorDiagnostics(HUB, Motor) colorsensor = ColorSensorDiagnostics(HUB, ColorSensor) drivebase = DriveBaseDiagnostics(HUB, Motor, DriveBase) +hubdiagnostics = HubDiagnostics(HUB) CLEARCONFIRM = input("Clear the console before proceeding? Y/N (default: yes): ") if(CLEARCONFIRM == "Y" or CLEARCONFIRM == "y" or CLEARCONFIRM == "yes" or CLEARCONFIRM == ""): print("Clearing console... \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n") @@ -35,6 +37,8 @@ while True: print("Enter 'b' for battery diagnostics") print("Enter 'm' for motor diagnostics") print("Enter 'cs' for color sensor diagnostics") + print("Enter 'db' for drive base diagnostics") + print("Enter 'h' for hub diagnostics") print("Enter 'q' to quit") choice = input("Your choice: ").strip().lower() @@ -49,7 +53,7 @@ while True: elif choice == "m": print("------------------------MOTOR DIAGNOSTICS------------------------") motor.fullTest() - print("Motor diagnostics completed.") + print("[Motor Diagnostics] Motor diagnostics completed.") elif choice == "q": print("Diagnostics completed successfully. Exiting program.") @@ -57,10 +61,13 @@ while True: elif choice == "cs": print("---------------------COLOR SENSOR DIAGNOSTICS---------------------") colorsensor.printAll() - print("Color sensor diagnostics completed.") + print("[Color Sensor Diagnostics] Color sensor diagnostics completed.") elif choice == "db": print("----------------------DRIVE BASE DIAGNOSTICS----------------------") drivebase.printAll() - print("Drivebase diagnostics completed.") + print("[Drivebase Diagnostics] Drivebase diagnostics completed.") + elif choice == "h": + print("--------------------------HUB DIAGNOSTICS--------------------------") + hubdiagnostics.printAll(False) else: print("Invalid choice. Please enter 'b', 'm', or 'q'.") \ No newline at end of file diff --git a/diagnostics/HubDiagnostics.py b/diagnostics/HubDiagnostics.py index ee5113f..1ffaf3b 100644 --- a/diagnostics/HubDiagnostics.py +++ b/diagnostics/HubDiagnostics.py @@ -1,13 +1,11 @@ from pybricks.tools import wait, StopWatch from pybricks import version import OtherFunctions as debug -import usys - -print("Pybricks version information:", version) -print("MicroPython information:", usys.implementation) -print("MicroPython version:", usys.version) +from MicroPythonDiagnostics import MicroPythonDiagnostics +from pybricks.parameters import Port class HubDiagnostics: def __init__(self, hub): + self.hub = hub self.port_map = { "A": Port.A, "B": Port.B, @@ -21,8 +19,23 @@ class HubDiagnostics: self.hub.display.off() for x in range(5): for y in range(5): - debug.log(f"Turning on pixel at position {x}, {y}...", v) - display.pixel(x, y, brightness=100) + debug.log(f"[Hub Diagnostics - Light Sources] Turning on pixel at position {x}, {y}...", v) + self.hub.display.pixel(x, y, brightness=100) wait(100) - debug.log(f"Turning off pixel at position {x}, {y}...", v) - display.pixel(x, y, brightness=0) + debug.log(f"[Hub Diagnostics - Light Sources] Turning off pixel at position {x}, {y}...", v) + self.hub.display.pixel(x, y, brightness=0) + + def printAll(self, verbose=True): + v = verbose + debug.log("[Hub Diagnostics] Starting hub diagnostics...", v) + while True: + choice = input("[Hub Diagnostics] Which hub diagnostic would you like to run?\n[Hub Diagnostics] Enter 'l' for light source test\n[Hub Diagnostics] Enter 'm' for MicroPython diagnostics\n[Hub Diagnostics] Enter 'q' to quit\n[Hub Diagnostics] Your choice: ").strip().lower() + if choice == "l": + debug.log("[Hub Diagnostics] Running light source test...", v) + self.testLightSources(v) + if choice == "m": + debug.log("[Hub Diagnostics] Running MicroPython diagnostics...", v) + MicroPythonDiagnostics.printAll() + if choice == "q": + print("[Hub Diagnostics] Hub diagnostics completed.") + return \ No newline at end of file diff --git a/diagnostics/MicroPythonDiagnostics.py b/diagnostics/MicroPythonDiagnostics.py new file mode 100644 index 0000000..120adc2 --- /dev/null +++ b/diagnostics/MicroPythonDiagnostics.py @@ -0,0 +1,11 @@ +import usys +from pybricks import version +class MicroPythonDiagnostics: + def __init__(self, hub): + pass + def printAll(): + print("[Hub Diagnostics - MicroPython] Hub version information:", version) + print("[Hub Diagnostics - MicroPython] MicroPython version:", usys.version) + print("[Hub Diagnostics - MicroPython] Pybricks version information:", usys.version_info) + print("[Hub Diagnostics - MicroPython] MicroPython information:", usys.implementation) + \ No newline at end of file diff --git a/diagnostics/OtherFunctions.py b/diagnostics/OtherFunctions.py index a7638a9..e5670f6 100644 --- a/diagnostics/OtherFunctions.py +++ b/diagnostics/OtherFunctions.py @@ -1,4 +1,3 @@ -verbose = True -def log(string): +def log(string, verbose): if(verbose): print("[LOG (verbose)]", string) -- 2.49.1