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