from pybricks.hubs import PrimeHub from pybricks.parameters import Axis, Direction, Port from pybricks.pupdevices import Motor from pybricks.robotics import DriveBase from pybricks.tools import wait from assi import A from robot_class import LazyRobot, Robot 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) def giro_preciso(gradi: int): destinazione = gradi aumento_v = 30 posizione_iniziale = db.angle() gradi_attuali = round(db.angle(), 1) gradi_mancanti_iniziali = gradi - posizione_iniziale if gradi_mancanti_iniziali <= 180 and gradi_mancanti_iniziali >= -180: curva_normale = True else: curva_normale = False if gradi_mancanti_iniziali > 0: gradi_da_percorerre = gradi_mancanti_iniziali - 360 destinazione = posizione_iniziale + gradi_da_percorerre else: gradi_da_percorerre = gradi_mancanti_iniziali + 360 destinazione = posizione_iniziale + gradi_da_percorerre print( f"curva precisa a {gradi} per andare da {posizione_iniziale} a {destinazione}" ) while (destinazione - gradi_attuali) > 0.2 or ( destinazione - gradi_attuali ) < -0.2: gradi_mancanti = destinazione - gradi_attuali velocita = abs(gradi_mancanti) # print("Gradi manc: ", gradi_mancanti) if gradi_mancanti > 0: robot.left.run(velocita + aumento_v) robot.right.run(-velocita - aumento_v) hub.display.char(">") elif gradi_mancanti < 0: robot.right.run(velocita + aumento_v) robot.left.run(-velocita - aumento_v) hub.display.char("<") gradi_attuali = round(db.angle(), 1) print("Gradi att: ", gradi_attuali) 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) giro_preciso(-120) print(db.angle()) giro_preciso(120) print(db.angle()) giro_preciso(90) print(db.angle()) giro_preciso(-90) print(db.angle()) giro_preciso(-120) print(db.angle()) giro_preciso(120) print(db.angle()) giro_preciso(-90) print(db.angle()) print(f"drived {db.distance()}") if __name__ == "__main__": import batteria from robot_local import robot main(robot)