Esempio n. 1
0
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
Esempio n. 2
0
 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