From f7b1d5701020669e78fdabe77e8906bbf1fcde26 Mon Sep 17 00:00:00 2001 From: leo Date: Sun, 19 Oct 2025 18:57:20 +0200 Subject: [PATCH] curva precisa --- giro_leo_prova.py | 84 ++++++++++++++++++++++++++++++++++ guidaavantieindietro_giohub.py | 31 +++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 giro_leo_prova.py create mode 100644 guidaavantieindietro_giohub.py diff --git a/giro_leo_prova.py b/giro_leo_prova.py new file mode 100644 index 0000000..d94c661 --- /dev/null +++ b/giro_leo_prova.py @@ -0,0 +1,84 @@ +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 +from robots import cbrobot as 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 gira_precisa(gradi: int): + aumento_v = 30 + posizione_iniziale = db.angle() + gradi_attuali = round(db.angle(), 1) + while (gradi - gradi_attuali) > 0.2 or (gradi - gradi_attuali) < -0.2: + gradi_mancanti = gradi - 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) + + # db.straight(100) + # gira_precisa(90) + # print(db.angle()) + # db.straight(100) + # gira_precisa(180) + # print(db.angle()) + # db.straight(100) + # gira_precisa(270) + # print(db.angle()) + # db.straight(100) + # gira_precisa(360) + # print(db.angle()) + + gira_precisa(120) + print(db.angle()) + gira_precisa(60) + print(db.angle()) + gira_precisa(-60) + print(db.angle()) + + # gira_fino_a_quando(120) + # print(db.angle()) + # gira_fino_a_quando(60) + # print(db.angle()) + # gira_fino_a_quando(-60) + # print(db.angle()) + + print(f"drived {db.distance()}") + + +if __name__ == "__main__": + import batteria + from robots import leorobot as robot + + main(robot) diff --git a/guidaavantieindietro_giohub.py b/guidaavantieindietro_giohub.py new file mode 100644 index 0000000..ebffdc7 --- /dev/null +++ b/guidaavantieindietro_giohub.py @@ -0,0 +1,31 @@ +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 + +import batteria +from assi import A +from robots import giorobot as robot + +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(400) +db.straight(-100)