コード例 #1
0
ファイル: straight_line.py プロジェクト: Dalekbot/dalekbot
    def run(self):
        self.running = True
        debug.print_to_all_devices("Challenge 'Straight line' Started.")
        # self.arduino_sensor_data.start() #   starts the new process and runs in the background

        self.arduino_sensor_data.start()
        time.sleep(0.2)

        while self.running:
            drive.forward(self.dalek_settings.max_speed)
            time.sleep(.1)

            # # detects we have finished the challenge.
            if self.arduino_sensor_data.frontPing <= 18:
                drive.stop()
                debug.print_to_all_devices(
                    "Center Distance:{}cm Run Finished".format(
                        self.arduino_sensor_data.frontPing))
                self.stop_running()

            if self.arduino_sensor_data.leftPing <= 5:
                debug.print_to_all_devices("turnForwardRight", "TrR")
                drive.turnForwardRight(self.dalek_settings.outer_turn_speed,
                                       self.dalek_settings.inner_turn_speed)
                time.sleep(.05)
                drive.forward(self.dalek_settings.max_speed)

            if self.arduino_sensor_data.rightPing <= 5:
                debug.print_to_all_devices("turnForwardLeft", "TrL")
                drive.turnForwardLeft(self.dalek_settings.inner_turn_speed,
                                      self.dalek_settings.outer_turn_speed)
                time.sleep(.05)
                drive.forward(self.dalek_settings.max_speed)
コード例 #2
0
ファイル: mag_tester.py プロジェクト: Dalekbot/dalekbot
def speedtest2():
    global speed, greatestMag
    drive.turnForwardLeft(speed, speed)
    time.sleep(0.5)
    speed -= 10
    mag = spi.getMag()
    if mag > greatestMag:
        greatestMag = mag
    print("\nmag:{}   Speed:{}".format(mag, speed))
    return speed, greatestMag
コード例 #3
0
ファイル: controller.py プロジェクト: Dalekbot/dalekbot
    def tank_drive(_leftPaddle, _rightPaddle):
        debug.print_to_all_devices("left: {}  Right: {}".format(
            _leftPaddle, _rightPaddle))

        if (_leftPaddle == 0) and (_rightPaddle == 0):
            drive.stop()
            debug.clear()
        elif (_leftPaddle < 0) and (_rightPaddle < 0):
            drive.paddleForward(-_leftPaddle, -_rightPaddle)
            # debug.print_to_all_devices("forwards","Fw")
        elif (_leftPaddle > 0) and (_rightPaddle > 0):
            drive.paddleBackward(_leftPaddle, _rightPaddle)
            # debug.print_to_all_devices("Backwards", "Bw")
        elif (_leftPaddle <= 0) and (_rightPaddle >= 0):
            drive.turnForwardRight(-_leftPaddle, _rightPaddle)
            # debug.print_to_all_devices("Spin Right", "SR")
        elif (_leftPaddle >= 0) and (_rightPaddle <= 0):
            drive.turnForwardLeft(_leftPaddle, -_rightPaddle)
コード例 #4
0
def straight_line_speed_test(dalek_settings, dalek_sounds):
    arduino_sensor_data = spi.SensorData()
    arduino_sensor_data.start(
    )  # starts the new process and runs in the background
    time.sleep(0.2)
    start_button = False

    def button_start_pressed():
        print("from straighe line challenge")

    while dalek_settings.drive:
        '''
        TODO:
        The dalek_settings.drive can be turned off with the controller 
        '''

        drive.forward(dalek_settings.max_speed)

        # detects we have finished the challenge.
        if arduino_sensor_data.front_distance <= 10:
            drive.cleanup()
            debug.print_to_all_devices(
                "Center Distance:{}cm Run Finished".format(
                    arduino_sensor_data.frontPing))
            arduino_sensor_data.running = False
            break

        if arduino_sensor_data.left_ping <= 5:
            debug.print_to_all_devices("turnForwardRight", "TrR")
            drive.turnForwardRight(dalek_settings.outer_turn_speed,
                                   dalek_settings.inner_turn_speed)
            time.sleep(.1)
            drive.forward(dalek_settings.max_speed)

        if arduino_sensor_data.right_distance <= 5:
            debug.print_to_all_devices("turnForwardLeft", "TrL")
            drive.turnForwardLeft(dalek_settings.inner_turn_speed,
                                  dalek_settings.outer_turn_speed)
            time.sleep(.1)
            drive.forward(dalek_settings.max_speed)

    arduino_sensor_data.join()  # wait for process to  finish
    debug.print_to_all_devices("Done...")
コード例 #5
0
ファイル: sls.py プロジェクト: Dalekbot/dalekbot
def start(dalek_settings):
    arduino_sensor_data = spi.SensorData()
    arduino_sensor_data.start(
    )  # starts the new process and runs in the background
    time.sleep(0.2)

    while True:
        '''
           TODO:
           The dalek_settings.drive can be turned off with the controller 
           '''

        drive.forward(100)

        # detects we have finished the challenge.
        if arduino_sensor_data.front_distance <= 10:
            drive.cleanup()
            print("Center Distance:{}cm Run Finished".format(
                arduino_sensor_data.front_distance))
            arduino_sensor_data.running = False
            break

        if arduino_sensor_data.left_distance <= 5:
            print("turnForwardRight", "TrR")
            drive.turnForwardRight(dalek_settings.outer_turn_speed,
                                   dalek_settings.inner_turn_speed)
            time.sleep(.1)
            drive.forward(dalek_settings.max_speed)

        if arduino_sensor_data.right_distance <= 5:
            print("turnForwardLeft", "TrL")
            drive.turnForwardLeft(dalek_settings.inner_turn_speed,
                                  dalek_settings.outer_turn_speed)
            time.sleep(.1)
            drive.forward(dalek_settings.max_speed)

    # wait for process to  finish
        print("Done...")
コード例 #6
0
def straight_line_speed_test_1(dalek_settings, dalek_sounds):
    '''
    finds the middle of the area and drives down it.
    '''
    arduino_sensor_data = spi.SensorData()
    arduino_sensor_data.start(
    )  # starts the new process and runs in the background
    time.sleep(0.2)

    turning_left = False
    turning_right = False
    previous_center_value = arduino_sensor_data.left_ping - arduino_sensor_data.right_distance
    counter = 0

    while dalek_settings.drive:
        '''
        TODO:
        The dalek_settings.drive can be turned off with the controller 
        '''

        drive.forward(dalek_settings.max_speed)
        time.sleep(.5)

        # detects we have finished the challenge.
        if arduino_sensor_data.frontPing <= 10:
            drive.cleanup()
            debug.print_to_all_devices(
                "Center Distance:{}cm Run Finished".format(
                    arduino_sensor_data.frontPing))
            arduino_sensor_data.running = False
            break

        center_value = arduino_sensor_data.left_ping - arduino_sensor_data.right_distance
        print(center_value)

        # if  (center_value - 1) <= previous_center_value <= (center_value + 1) :
        if previous_center_value == center_value:
            # use the if between to stop hunting, a few centermeters either way
            #  should be fine.
            # we are driving parallel to walls
            # we should be able to drive forward while moving into the middle.
            print("parallel to walls {} {}".format(previous_center_value,
                                                   center_value))

        else:
            print("Not parallel to walls {} {}".format(previous_center_value,
                                                       center_value))

        counter += 1
        if counter == 10:
            previous_center_value = center_value
            counter = 0

        # print(counter)

        if (center_value < -2) and turning_right == False:
            turning_right = True
            turning_left = False
            drive.turnForwardRight(dalek_settings.outer_turn_speed,
                                   dalek_settings.inner_turn_speed)
            debug.print_to_all_devices("turnForwardRight", "TrR")
            time.sleep(.05)
            # drive.forward(dalek_settings.max_speed)
            # time.sleep(.05)

        if (center_value > 2) and turning_left == False:
            turning_left = True
            turning_right = False
            drive.turnForwardLeft(dalek_settings.inner_turn_speed,
                                  dalek_settings.outer_turn_speed)
            debug.print_to_all_devices("turnForwardLeft", "TrL")
            time.sleep(.05)
            # drive.forward(dalek_settings.max_speed)
            # time.sleep(.05)

        # if  -2 <= center_value <= 2:
        #     # if it is between these values
        #     # straiten up the bot
        #     if turning_left

    arduino_sensor_data.join()  # wait for process to  finish
    debug.print_to_all_devices("Done...")