class MicrocontrollerDriver: RIGHT = -1 LEFT = 1 def __init__(self, uart_driver): self._mcu_controller = McuController(uart_driver) self._movement_controller = MovementController(self._mcu_controller) self._treasure_controller = TreasureController(self._mcu_controller) self._sequence_number = 0 def move_forward(self, speed=Constants.DEFAULT_SPEED): self._movement_controller.move_forward(round(speed) * 10) def move_right(self, speed=Constants.DEFAULT_SPEED): self._movement_controller.move_right(round(speed) * 10) def move_left(self, speed=Constants.DEFAULT_SPEED): self._movement_controller.move_left(round(speed) * 10) def move_backward(self, speed=Constants.DEFAULT_SPEED): self._movement_controller.move_backward(round(speed) * 10) def kill_all_motors(self): self._movement_controller.kill_all_motors() def rotate_to_the_right(self, speed=Constants.DEFAULT_SPEED): self._movement_controller.turn(self.RIGHT, round(speed) * 10) def rotate_to_the_left(self, speed=Constants.DEFAULT_SPEED): self._movement_controller.turn(self.LEFT, round(speed) * 10) def move_to(self, x_position, y_position, speed_limit=Constants.DEFAULT_SPEED): self._movement_controller.move_to(round(x_position) * 10, round(y_position) * 10, round(speed_limit) * 10, self._sequence_number) self._sequence_number +=1 def rotate_motor(self, motor_1_speed, motor_2_speed, motor_3_speed, motor_4_speed): self._movement_controller.rotate_motor(round(motor_1_speed) * 10, round(motor_2_speed) * 10, round(motor_3_speed) * 10, round(motor_4_speed) * 10) def rotate(self, theta, speed=Constants.DEFAULT_SPEED): self._movement_controller.rotate(theta, speed * 10, self._sequence_number) self._sequence_number += 1 def get_last_command_progression_by_motors(self): return self._mcu_controller.get_motors_completion() def get_last_command_minimal_progression(self): return self._mcu_controller.get_overall_completion() def get_capacitor_voltage(self): return self._mcu_controller.get_capacitor_voltage() def get_secret_code(self): return self._mcu_controller.get_secret_code() def reset_sequence_number(self): self._sequence_number = 0 def treasure_pickup(self): self._treasure_controller.treasure_pickup(self._sequence_number) self._sequence_number += 1 def treasure_drop(self): self._treasure_controller.treasure_drop(self._sequence_number) self._sequence_number += 1 def treasure_reset(self): self._treasure_controller.treasure_reset(self._sequence_number) self._sequence_number += 1 def discharge_capacitor(self): self._treasure_controller.discharge_capacitor(self._sequence_number) self._sequence_number += 1
def __init__(self, uart_driver): self._mcu_controller = McuController(uart_driver) self._movement_controller = MovementController(self._mcu_controller) self._treasure_controller = TreasureController(self._mcu_controller) self._sequence_number = 0