Practical Robotics Modular Robot Library

Dependents:   ModularRobot

Revision:
3:8762f6b2ea8d
Parent:
0:8a2dd255c508
Child:
5:6da8daaeb9f7
--- a/motors.cpp	Sat Nov 26 21:50:10 2016 +0000
+++ b/motors.cpp	Mon Nov 28 22:41:14 2016 +0000
@@ -11,6 +11,33 @@
 DigitalOut hb1_r(p24);
 DigitalOut hb2_l(p29);
 DigitalOut hb2_r(p30);
+float left_motor_speed = 0;
+float right_motor_speed = 0;
+
+float Motors::get_left_motor_speed()
+{
+    return left_motor_speed;   
+}
+
+float Motors::get_right_motor_speed()
+{
+    return right_motor_speed;   
+}
+
+void Motors::forwards(float speed){
+    set_left_motor_speed(speed);
+    set_right_motor_speed(speed);    
+}
+
+void Motors::backwards(float speed){
+    set_left_motor_speed(-speed);
+    set_right_motor_speed(-speed);   
+}
+
+void Motors::turn(float speed){
+    set_left_motor_speed(speed);
+    set_right_motor_speed(-speed);   
+}
 
 float Motors::get_current_left(){
     float current = motor_vprop_l.read();
@@ -34,6 +61,8 @@
 
 void Motors::sleep(){
     nsleep = 0;   
+    left_motor_speed = 0;
+    right_motor_speed = 0;
 }
 
 void Motors::wake_up(){
@@ -42,34 +71,40 @@
 
 void Motors::coast_left(){
     enable_l = 0;       
+    left_motor_speed = 0;
 }
 
 void Motors::brake_left(){
     hb1_l = 1;
     hb2_l = 1;
     enable_l = 1;   
+    left_motor_speed = 0;
 }
 
 void Motors::set_left_motor_speed(float speed){
     if(speed < 0){
         hb1_l = 0;
         hb2_l = 1;
-        enable_l = get_adjusted_speed(-speed);
+        left_motor_speed = -get_adjusted_speed(-speed);
+        enable_l = -left_motor_speed;
     }else{
         hb1_l = 1;
         hb2_l = 0;
-        enable_l = get_adjusted_speed(speed);   
+        left_motor_speed = get_adjusted_speed(speed);
+        enable_l = left_motor_speed;   
     }   
 }
 
 void Motors::coast_right(){
     enable_r = 0;       
+    right_motor_speed = 0;
 }
 
 void Motors::brake_right(){
     hb1_r = 1;
     hb2_r = 1;
     enable_r = 1;   
+    right_motor_speed = 0;
 }
 
 void Motors::coast(){
@@ -86,11 +121,13 @@
     if(speed < 0){
         hb1_r = 0;
         hb2_r = 1;
-        enable_r = get_adjusted_speed(-speed);
+        right_motor_speed = -get_adjusted_speed(-speed);
+        enable_r = -right_motor_speed;
     }else{
         hb1_r = 1;
         hb2_r = 0;
-        enable_r = get_adjusted_speed(speed);   
+        right_motor_speed = get_adjusted_speed(speed);
+        enable_r = right_motor_speed;   
     }   
 }