FLL/giro_leo_prova.py
2025-10-19 18:57:20 +02:00

84 lines
2.3 KiB
Python

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)