YRL Maze lab made more script-y
Dependencies: PsiSwarmLab-ScriptingBased mbed
Fork of UKESF_Lab by
Diff: main.h
- Revision:
- 32:cdcc91651e55
- Parent:
- 31:7fa2c47d73a2
- Child:
- 34:232559052b2f
--- a/main.h Mon Jun 20 13:36:30 2016 +0000 +++ b/main.h Fri Sep 14 16:01:22 2018 +0000 @@ -10,8 +10,68 @@ int main(void); void handle_switch_event(char switch_state); void handle_user_serial_message(char * message, char length, char interface); -void move_forward(int distance); -void turn_right(); -void turn_left(); + +static float left_speeds[2] = {0.0, 0.0}; +static float right_speeds[2] = {0.0, 0.0}; +static float forward_speeds[2] = {0.0, 0.0}; + +void inline set_left_turn_speeds(float l, float r) { left_speeds[0] = l; left_speeds[1] = r; } +void inline set_right_turn_speeds(float l, float r) { right_speeds[0] = l; right_speeds[1] = r; } +void inline set_forward_wheel_speeds(float l, float r) { forward_speeds[0] = l; forward_speeds[1] = r; } + +static float cm_in_5_seconds = 40; +static float degrees_in_5_seconds = 300; + +void inline set_distance_in_5_seconds(float dist) { cm_in_5_seconds = dist; } +void inline set_degrees_in_5_seconds(float degrees) { degrees_in_5_seconds = degrees; } + +inline void forward_timed(int seconds) +{ + set_motor_speed(forward_speeds[0], forward_speeds[1]); + wait(seconds); + brake(); +} + +inline void forward_cm(int distance_in_cm) +{ + float cm_in_1_second = cm_in_5_seconds/5; + float seconds_for_1_cm = 1/cm_in_1_second; + float seconds_to_move = seconds_for_1_cm * distance_in_cm; + + forward_timed(seconds_to_move); +} + + +inline void turn_right_timed(float turn_time) +{ + set_motor_speed(right_speeds[0], right_speeds[1]); + wait(turn_time); + brake(); +} + +inline void turn_right_degrees(float degrees) +{ + float degrees_in_1_second = degrees_in_5_seconds/5; + float seconds_per_degree = 1/degrees_in_1_second; + float turn_time = seconds_per_degree * degrees; + + turn_right_timed(turn_time); +} + +inline void turn_left_timed(float turn_time) +{ + set_motor_speed(left_speeds[0], left_speeds[1]); + wait(turn_time); + brake(); +} + +inline void turn_left_degrees(float degrees) +{ + float degrees_in_1_second = degrees_in_5_seconds/5; + float seconds_per_degree = 1/degrees_in_1_second; + float turn_time = seconds_per_degree * degrees; + + turn_left_timed(turn_time); +} #endif \ No newline at end of file