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()
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()
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
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)
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...")
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...")
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...")
# 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)