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 9bdf436..1ffaf3b 100644 --- a/diagnostics/HubDiagnostics.py +++ b/diagnostics/HubDiagnostics.py @@ -1,10 +1,8 @@ from pybricks.tools import wait, StopWatch -from pybricks.parameters import Port from pybricks import version import OtherFunctions as debug -import usys - - +from MicroPythonDiagnostics import MicroPythonDiagnostics +from pybricks.parameters import Port class HubDiagnostics: def __init__(self, hub): self.hub = hub @@ -16,20 +14,28 @@ 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) + 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) + 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): - self.printAbout() - self.testLightSources(False) + + 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/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 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