Working, Clean

Fork of Movement by Dustin Berendsen

Movement.cpp

Committer:
peterknoben
Date:
2017-11-01
Revision:
1:03e2651b4a24
Parent:
0:9c61094ffaac
Child:
2:43a6498000e8

File content as of revision 1:03e2651b4a24:

#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){
        direction[0]=0;
        direction[1]=0;
    }
    else if(mode==4){
        direction[0]=-1;
        direction[1]=-1;
    }           
    else if(mode==5){
        direction[0]=-1;
        direction[1]=1;
    }
    else if(mode==6){
        direction[0]=0;
        direction[1]=0;
    }
    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;
}
*/