diff --git a/guida_funzionante.py b/guida_funzionante.py index 2f826bd..191a332 100644 --- a/guida_funzionante.py +++ b/guida_funzionante.py @@ -4,41 +4,47 @@ from pybricks.pupdevices import Motor from pybricks.robotics import DriveBase from pybricks.tools import wait -import batteria from assi import A +from robot_class import LazyRobot, Robot from robots import cbrobot as robot -hub = robot.hub -db = robot.db + +def main(robot: LazyRobot): + hub = robot.hub + db = robot.db + + def gira_fino_a_quando(gradi: int): + posizione_iniziale = db.angle() + gradi_mancanti = gradi - posizione_iniziale + db.turn(gradi_mancanti) + # dangolo = db.angle() + # if angolo < gradi: + # db.turn(gradi - angolo) + + db.use_gyro(True) # abilitiamo il giroscopio + # (mm/s, mm/s², deg/s, deg/s²) + db.settings(100, 100, 90, 50) + wait(300) + db.reset(angle=0) + + db.straight(100) + gira_fino_a_quando(90) + print(db.angle()) + db.straight(100) + gira_fino_a_quando(180) + print(db.angle()) + db.straight(100) + gira_fino_a_quando(270) + print(db.angle()) + db.straight(100) + gira_fino_a_quando(360) + print(db.angle()) + + print(f"drived {db.distance()}") -def gira_fino_a_quando(gradi: int): - posizione_iniziale = db.angle() - gradi_mancanti = gradi - posizione_iniziale - db.turn(gradi_mancanti) - # dangolo = db.angle() - # if angolo < gradi: - # db.turn(gradi - angolo) +if __name__ == "__main__": + import batteria + from robots import cbrobot as robot - -db.use_gyro(True) # abilitiamo il giroscopio -# (mm/s, mm/s², deg/s, deg/s²) -db.settings(100, 100, 90, 50) -wait(300) -db.reset(angle=0) - -db.straight(100) -gira_fino_a_quando(90) -print(db.angle()) -db.straight(100) -gira_fino_a_quando(180) -print(db.angle()) -db.straight(100) -gira_fino_a_quando(270) -print(db.angle()) -db.straight(100) -gira_fino_a_quando(360) -print(db.angle()) - - -print(f"drived {db.distance()}") + main(robot) diff --git a/guidaavantieindietro.py b/guidaavantieindietro.py index 7b4fb2d..6a19b52 100644 --- a/guidaavantieindietro.py +++ b/guidaavantieindietro.py @@ -4,33 +4,38 @@ from pybricks.pupdevices import Motor from pybricks.robotics import DriveBase from pybricks.tools import wait -import batteria from assi import A -from robots import giorobot as robot - -hub = robot.hub -db = robot.db +from robot_class import LazyRobot -def gira_fino_a_quando(gradi: int): - posizione_iniziale = db.angle() - gradi_mancanti = gradi - posizione_iniziale - db.turn(gradi_mancanti) +def main(robot: LazyRobot): + hub = robot.hub + db = robot.db - # dangolo = db.angle() - # if angolo < gradi: - # db.turn(gradi - angolo) + def gira_fino_a_quando(gradi: int): + posizione_iniziale = db.angle() + gradi_mancanti = gradi - posizione_iniziale + db.turn(gradi_mancanti) + + # dangolo = db.angle() + # if angolo < gradi: + # db.turn(gradi - angolo) + + db.use_gyro(True) # abilitiamo il giroscopio + # (mm/s, mm/s², deg/s, deg/s²) + db.settings(100, 100, 100, 50) + # max mm/s = 864 + # mm/s quadrato = accelerazione + # + wait(300) + db.reset(angle=0) + + db.straight(40) + db.straight(-10) -db.use_gyro(True) # abilitiamo il giroscopio -# (mm/s, mm/s², deg/s, deg/s²) -db.settings(100, 100, 100, 50) -# max mm/s = 864 -# mm/s quadrato = accelerazione -# -wait(300) -db.reset(angle=0) +if __name__ == "__main__": + import batteria + from robots import cbrobot as robot - -db.straight(400) -db.straight(-100) + main(robot) diff --git a/menu.py b/menu.py new file mode 100644 index 0000000..bfa4aab --- /dev/null +++ b/menu.py @@ -0,0 +1,45 @@ +# menu.py +import usys +from pybricks.tools import hub_menu, wait + +from guida_funzionante import main as run_G +from guidaavantieindietro import main as run_A +from robots import cbrobot as robot + +PROGRAMMI = { + "G": run_G, + "A": run_A, +} + + +def run_with_play(hub, fn, *args, **kwargs): + try: + hub.display.char(">") + return fn(*args, **kwargs) + finally: + hub.display.text("") + + +def run_once(): + labels = list(PROGRAMMI.keys()) + if not labels: + print("Nessun programma.") + wait(1500) + return + + # if len(labels) == 1: # no menu se solo 1 programma + # run_with_play(robot.hub, PROGRAMMI[labels[0]], robot) + # return + + scelta = hub_menu(*labels) + run_with_play(robot.hub, PROGRAMMI[scelta], robot) + + +while True: + run_once() +# while True: +# try: +# run_once() +# except Exception as e: +# usys.print_exception(e) +# wait(3000)