Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Movement by
Movement.cpp
- Committer:
- peterknoben
- Date:
- 2017-10-31
- Revision:
- 0:9c61094ffaac
- Child:
- 1:03e2651b4a24
File content as of revision 0:9c61094ffaac:
#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; } */