Working, Clean
Fork of Movement by
Diff: Movement.cpp
- 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; +} +*/ +