Working, Clean

Fork of Movement by Dustin Berendsen

Revision:
0:9c61094ffaac
Child:
1:03e2651b4a24
diff -r 000000000000 -r 9c61094ffaac Movement.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Movement.cpp	Tue Oct 31 14:34:37 2017 +0000
@@ -0,0 +1,138 @@
+#include "Movement.h"
+#include "mbed.h"
+
+float movement;
+
+Movement::Movement(void)
+{
+    
+}
+
+int * Movement::getdirection(int mode){
+//int *getdirection(int direction[2]){
+    static int direction[2];
+    if(mode==1){
+        direction[0]=1;
+        direction[1]=1;
+    }
+    else if(mode==2){
+        direction[0]=1;
+        direction[1]=-1;
+    }
+    else if(mode==3){
+        //servo
+    }
+    else if(mode==4){
+        direction[0]=-1;
+        direction[1]=-1;
+    }           
+    else if(mode==5){
+        direction[0]=-1;
+        direction[1]=1;
+    }
+    else if(mode==6){
+        //servo
+    }
+    else{
+        //Error, unavailable mode
+    }
+    return direction;
+}
+
+
+float Movement::getposition(int SignalNumber, int mode, int side, float max_range){
+    static float position;                   //Define a position array
+    int *direction_math;                        //Define a useable direction array in this function
+    direction_math = getdirection(mode);            //Fill the useable direction array 
+    float position_math;
+    switch(SignalNumber){
+        case 1: //Move slowest
+            movement = direction_math[side] *1;
+            position_math = position + movement;
+            if (position_math >= max_range && position_math <=0){
+                position = position;
+            }
+            else{
+                position += movement;
+            }
+            break;
+        case 2: //Move slow
+            movement = direction_math[side] *2;
+            position_math = position + movement;
+            if (position_math >= max_range && position_math <=0){
+                position = position;
+            }
+            else{
+                position += movement;
+            }
+            break;
+        case 3: //Move fast
+            movement = direction_math[side] *5;
+            position_math = position + movement;
+            if (position_math >= max_range && position_math <=0){
+                position = position;
+            }
+            else{
+                position += movement;
+            }
+            break;
+        case 4: //Move fastest
+            movement = direction_math[side] *10;
+            position_math = position + movement;
+            if (position_math >= max_range && position_math <=0){
+                position = position;
+            }
+            else{
+                position += movement;
+            }
+            break;
+        default : //if something is wrong or no muscles are flexed, standstill
+            position = position;
+            break; 
+    }
+    return position;
+}
+
+
+
+
+
+/*    
+float *Movement::getposition(int SignalNumber, int mode){
+    static float position[2];                   //Define a position array
+    int *direction_math;                        //Define a useable direction array in this function
+    direction_math = getdirection(mode);            //Fill the useable direction array 
+    switch(SignalNumber){
+        case 1: //Move slowest
+            xmovement = direction_math[0] * 1; //mm
+            ymovement = direction_math[1] * 1; //mm
+            position[0] += xmovement;
+            position[1] += ymovement;
+            break;
+        case 2: //Move slow
+            xmovement = direction_math[0] * 2; //mm
+            ymovement = direction_math[1] * 2; //mm
+            position[0] += xmovement;
+            position[1] += ymovement;
+            break;
+        case 3: //Move fast
+            xmovement = direction_math[0] * 5; //mm
+            ymovement = direction_math[1] * 5; //mm
+            position[0] += xmovement;
+            position[1] += ymovement;
+            break;
+        case 4: //Move fastest
+            xmovement = direction_math[0] * 10; //mm
+            ymovement = direction_math[1] * 10; //mm
+            position[0] += xmovement;
+            position[1] += ymovement;
+            break;
+        default : //if something is wrong or no muscles are flexed, standstill
+            position[0] = position[0];
+            position[1] = position[1];
+            break; 
+    }
+    return position;
+}
+*/
+