Example #1
0
 def dpad_up_button_pressed():
     if ps3_ControllerMode == 2:  # 2 Mission Select Mode
         challenge_select(0)
     elif ps3_ControllerMode == 1:
         debug.print_to_all_devices('Forwards', "FW")
         drive.forward(dalek_settings.speed)
     else:
         head_controller.eye_move_up()
Example #2
0
def driveBackwardsToDistance(distance):

    DalekPrint("driveBackwards()")
    dalekData = spi.readDevice1Data()

    while dalekData['rearPing'] != distance:
        dalekSpeed = CalculateSpeedToDrive(dalekData['rearPing'], distance)

        if dalekData['rearPing'] <= distance:
            drive.forward(dalekSpeed)
        else:
            drive.backward(dalekSpeed)
        dalekData = spi.readDevice1Data()
def drive_backwards_to_distance(distance=distance_to_wall):

    print("driveBackwards()")

    while DalekSensors.rear_distance != distance:
        dalekSpeed = CalculateSpeedToDrive(
            DalekSensors.rear_distance, distance)

        if DalekSensors.rear_distance <= distance:
            drive.forward(dalekSpeed)
        else:

            drive.backward(dalekSpeed)
    drive.stop()
Example #4
0
 def run(self):
     self.running = True
     debug.print_to_all_devices("Challenge 'the_duck_shoot' Started.")
     while self.running:
         drive.forward(self.dalek_settings.max_speed)
         time.sleep(1)
         ####################################################
         #                                                  #
         # Code for this challenge goes in this while loop  #
         #                                                  #
         ####################################################
         debug.print_to_all_devices("BANG!!!")  # this line can be removed
         drive.stop()
         self.stop_running()  # this line can be removed
Example #5
0
    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)
Example #6
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...")
Example #7
0
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...")
Example #8
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...")
Example #9
0
# GPIO.setup(pinMotorBRSpeed, GPIO.OUT)
# GPIO.setup(pinMotorBRForwards, GPIO.OUT)
# GPIO.setup(pinMotorBRBackwards, GPIO.OUT)

# pwmMotorBRSpeed = GPIO.PWM(pinMotorBRSpeed, Frequency)
# pwmMotorBRSpeed.start(Stop)

#######################
### main
#######################

while True:
    # toggle the Back right motor
    # GPIO.output(pin_motor_relay, GPIO.HIGH)
    # time.sleep(1)
    # print("on")
    # GPIO.output(pin_motor_relay, GPIO.LOW)
    # time.sleep(1)
    # print("off")
    # pwmMotorBRSpeed.ChangeDutyCycle(Speed)
    # GPIO.output(pinMotorBRForwards, GPIO.HIGH)
    # GPIO.output(pinMotorBRBackwards, GPIO.LOW)
    drive.forward(30)
    time.sleep(2)
    drive.backward(30)
    time.sleep(2)
    drive.spinLeft(50)
    time.sleep(2)
    drive.spinRight(50)
    time.sleep(2)