Compare commits

14 Commits
main ... dev

7 changed files with 136 additions and 3 deletions

View File

@@ -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())

View File

@@ -0,0 +1,49 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from usys import stdin
from uselect import poll
hub = PrimeHub()
port_map = {
"A": Port.A,
"B": Port.B,
"C": Port.C,
"D": Port.D,
"E": Port.E,
"F": Port.F,
}
leftmotorport = input("Enter the left motor port: ")
left_motor = Motor(port_map[leftmotorport], Direction.COUNTERCLOCKWISE)
rightmotorport = input("Enter the right motor port: ")
right_motor = Motor(port_map[rightmotorport],Direction.CLOCKWISE) # Specify default direction
# DriveBase configuration
WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels)
AXLE_TRACK = 180 # mm (distance between wheels)
drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK)
drive_base.settings(600, 500, 300, 200)
drive_base.use_gyro(True)
# Register the standard input so we can read keyboard presses.
keyboard = poll()
keyboard.register(stdin)
while True:
# Check if a key has been pressed.
if keyboard.poll(0):
# Read the key and print it.
key = stdin.read(1)
print("You pressed:", key)
if(key == "W"):
print("Insert robot go forward code here")
elif(key == "A"):
print("Insert robot go left code here")
elif(key == "S"):
print("Insert robot go backwards code here")
elif(key == "D"):
print("Insert robot go right code here")
else:
print("That key doesn't do anything.")

View File

@@ -0,0 +1,33 @@
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
from pybricks import version
from OtherFunctions import vprint
import usys
print("Pybricks version information:", version)
print("MicroPython information:", usys.implementation)
print("MicroPython version:", usys.version)
class HubDiagnostics:
def __init__(self):
self.hub = PrimeHub()
self.port_map = {
"A": Port.A,
"B": Port.B,
"C": Port.C,
"D": Port.D,
"E": Port.E,
"F": Port.F,
}
def testLightSources(self, verbose):
v = verbose
hub.display.off()
for x in range(5):
for y in range(5):
vprint(f"Turning on pixel at position {x}, {y}...", v)
display.pixel(x, y, brightness=100)
wait(100)
vprint(f"Turning off pixel at position {x}, {y}...", v)
display.pixel(x, y, brightness=0)

View File

@@ -131,11 +131,11 @@ class MotorDiagnostics:
print("\n FINAL MOTOR STATISTICS") print("\n FINAL MOTOR STATISTICS")
final = (test180 + test540 + test1000) / 3 final = (test180 + test540 + test1000) / 3
print("Final motor health score:", str(final) + "%") print("Final motor health score:", str(final) + "%")
if final < 80: if final < 65:
print("Your motor is in need of attention. Make sure to clean it regularly and charge the Prime Hub.") print("Your motor is in need of attention. Make sure to clean it regularly and charge the Prime Hub.")
elif final < 90: elif final < 85:
print("Your motor is in OK condition. Make sure to clean it regularly and charge the Prime Hub.") print("Your motor is in OK condition. Make sure to clean it regularly and charge the Prime Hub.")
elif final < 97: elif final < 95:
print("Your motor is in great condition!") print("Your motor is in great condition!")
else: else:
print("Your motor is in AMAZING condition!!!") print("Your motor is in AMAZING condition!!!")

View File

@@ -0,0 +1,2 @@
def vprint(string, verbose):
print("[LOG (verbose enabled)]", string)