void turn_left (int degree) { int COUNT = degree * LEFT_TURN_COUNT / 90; int turns; reset_encoder(LEFT_MOTOR_ENCODER); reset_encoder(RIGHT_MOTOR_ENCODER); servo(LEFT_SERVO, LEFT_SERVO_90); servo(RIGHT_SERVO, RIGHT_SERVO_45); sleep(0.1); while ((turns = read_encoder(RIGHT_MOTOR_ENCODER)) < COUNT) { fd(RIGHT_MOTOR); } off(RIGHT_MOTOR); center_servos(); } void backup_left (int degree) { int COUNT = degree * LEFT_BACKUP_COUNT / 90; int turns; reset_encoder(LEFT_MOTOR_ENCODER); reset_encoder(RIGHT_MOTOR_ENCODER); servo(LEFT_SERVO, LEFT_SERVO_45); servo(RIGHT_SERVO, RIGHT_SERVO_90); sleep(0.1); while ((turns = read_encoder(LEFT_MOTOR_ENCODER)) < COUNT) { bk(LEFT_MOTOR); } off(LEFT_MOTOR); center_servos(); } void turn_right (int degree) { int COUNT = degree * RIGHT_TURN_COUNT / 90; int turns; reset_encoder(LEFT_MOTOR_ENCODER); reset_encoder(RIGHT_MOTOR_ENCODER); servo(LEFT_SERVO, LEFT_SERVO_45); servo(RIGHT_SERVO, RIGHT_SERVO_90); sleep(0.1); while ((turns = read_encoder(LEFT_MOTOR_ENCODER)) < COUNT) { fd(LEFT_MOTOR); } off(LEFT_MOTOR); center_servos(); } void backup_right (int degree) { int COUNT = degree * RIGHT_BACKUP_COUNT / 90; int turns; reset_encoder(LEFT_MOTOR_ENCODER); reset_encoder(RIGHT_MOTOR_ENCODER); servo(LEFT_SERVO, LEFT_SERVO_90); servo(RIGHT_SERVO, RIGHT_SERVO_45); sleep(0.1); while ((turns = read_encoder(RIGHT_MOTOR_ENCODER)) < COUNT) { bk(RIGHT_MOTOR); } off(RIGHT_MOTOR); center_servos(); } void backup_after_turn () { center_servos(); reset_encoder(LEFT_MOTOR_ENCODER); reset_encoder(RIGHT_MOTOR_ENCODER); bk(LEFT_MOTOR); bk(RIGHT_MOTOR); while (read_encoder(LEFT_MOTOR_ENCODER) < 100 && read_encoder(RIGHT_MOTOR_ENCODER) < 100) { sleep(0.01); } off(LEFT_MOTOR); off(RIGHT_MOTOR); } void turn_180 (int rightturns) { if (rightturns) { backup_right(90); sleep(0.1); drive_into_wall(0, 5.0); drive_ticks(1, 30); turn_right(90); } else { backup_left(90); sleep(0.1); drive_into_wall(0, 5.0); drive_ticks(1, 30); turn_left(90); } }