YRL Maze lab made more script-y

Dependencies:   PsiSwarmLab-ScriptingBased mbed

Fork of UKESF_Lab by UKESF Headstart Summer School

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