Пример #1
0
    def __init__(self) -> None:
        self.logging = Logging("events")
        self.chassis = Chassis(power_measurement_period=0.3)
        self.rgb = RgbLedBlock()
        self.display = DisplayBlock()
        self.distance = DistanceBlock(measurement_period=0.1)
        self.button = ButtonBlock(measurement_period=0.1)
        self.ir_block = IrBlock()
        self.ir_block.add_remote(IrNumericRemote())

        self.button.value.equal_to(True, True, self.change_patrol)

        self.near_barrier_event = None
        self.far_bariier_event = None
        self.enough_space_event = None
        self.open_space_event = None
        self.patrol = False

        self.display.contrast(0)
        Ble.value_remote.equal_to(RemoteKey("a"), True, self.turn_left)
        Ble.value_remote.equal_to(RemoteKey("d"), True, self.turn_right)
        Ble.value_remote.equal_to(RemoteKey("w"), True, self.speed_up)
        Ble.value_remote.equal_to(RemoteKey("s"), True, self.slow_down)
        Ble.value_remote.equal_to(RemoteKey("z"), True, self.stop)
        Ble.value_remote.equal_to(RemoteKey("x"), True, self.reverse)
        Ble.value_remote.equal_to(RemoteKey("p"), True, self.change_patrol)

        self.ir_block.value.equal_to(IrNumericRemote.key_left, True,
                                     self.turn_left)
        self.ir_block.value.equal_to(IrNumericRemote.key_right, True,
                                     self.turn_right)
        self.ir_block.value.equal_to(IrNumericRemote.key_top, True,
                                     self.speed_up)
        self.ir_block.value.equal_to(IrNumericRemote.key_bottom, True,
                                     self.slow_down)
        self.ir_block.value.equal_to(IrNumericRemote.key_ok, True, self.stop)
        self.ir_block.value.equal_to(IrNumericRemote.key_hash, True,
                                     self.reverse)
        self.ir_block.value.equal_to(IrNumericRemote.key_star, True,
                                     self.change_patrol)

        self.counter = 0
        Planner.repeat(0.5, self.print_power_info)
        PowerMgmt.set_plan(PowerPlan.get_max_performance_plan())

        self.current_smoother = SmoothedVariable(
            3, SmoothingType.average, self.chassis.power.battery_current_mA)
        self.current_smoother.more_than(600, True, self.stop_for_a_while, 1)
        self.heart_beat = False
Пример #2
0
    def __init__(self) -> None:
        self.logging = Logging("events")
        self.display = DisplayBlock()
        self.rgb = RgbLedBlock()
        self.rgb.set_on()

        self.distance_block = DistanceBlock(measurement_period=0.05)
        self.smooth_distance = SmoothedVariable(3, SmoothingType.progressive,
                                                self.distance_block.value)
        self.short_distance_event = self.smooth_distance.less_than(
            self.border_distance, True, self.short_distance)
        self.smooth_distance.more_than(self.border_distance, True,
                                       self.long_distance)
        self.power_save_state = 0

        Planner.repeat(0.5, self.get_distance)
Пример #3
0
    def __init__(self):
        self.started = False
        self.display = DisplayBlock()
        self.logging = Logging("plan")
        self.button = ButtonBlock()
        self.rgb = RgbLedBlock()
        self.led_default()
        self.dim_x, self.dim_y = self.display.get_dimensions()
        self.center_x = int(self.dim_x / 2)
        self.center_y = int(self.dim_y / 2)
        self.point = None
        self.map = None
        self.score = 0

        self.wait_for_start()
        self.redraw()
Пример #4
0
def plan():
    logging = Logging()

    display = DisplayBlock()
    dim_x, dim_y = display.get_dimensions()

    logging.info("resolution x: %d, y: %d" % (dim_x, dim_y))
    display.draw_ellipse(int(dim_x / 2), int(dim_y / 2),
                         int(dim_x / 2) - 5,
                         int(dim_y / 2) - 5)

    text = "Hallo"
    letter_width = 8
    letter_height = 8

    text_x = int(dim_x / 2) - int(len(text) * letter_width / 2) + 1
    text_y = int(dim_y / 2) - int(letter_height / 2) - 1

    display.print_text(text_x, text_y, text)
    line_y = text_y + letter_height + 2
    display.draw_line(text_x, line_y, text_x + len(text) * letter_width - 2,
                      line_y)

    display.showtime()