OX V1

Dependencies:   mbed

bmu.h

Committer:
arthicha
Date:
2016-12-05
Revision:
0:6182212860fb

File content as of revision 0:6182212860fb:

#include "mbed.h"
#include "zmu9250.h"
#include "math.h"


ZMU9250 a;
class bmuimu

    {
        
              
        
    public:
              
            int yaw_z,roll_x,pitch_y,stard_x,stard_y,stard_z;
            int X_pos , Y_pos , Z_pos ;
        bool bmuimu:: Getposition(int x, int y, int z){
                if( ((this->yaw_z > -40) && (this->yaw_z < 0)) &&  ((this->roll_x > -30) && (this->roll_x < 30)) && ((this->pitch_y > -20) && (this->pitch_y < 30))  ){
                    x++; //R x+
                    
                } 
                 else if( ((this->yaw_z > -105) && (this->yaw_z < -75))&& ((this->roll_x > -20) && (this->roll_x < 35)) && ((this->pitch_y > -20) && (this->pitch_y < 30)) ){
                    y--;  //B y+
                 
                }
                 else if( ((this->yaw_z > 140) && (this->yaw_z < 175)) && ((this->roll_x > -40) && (this->roll_x < 25)) && ((this->pitch_y > -35) && (this->pitch_y < 25))  ){
                    y++; //F y-
                
                
                }
                else if( ((this->yaw_z > -155) && (this->yaw_z < -130)) && ((this->roll_x > -25) && (this->roll_x < 10)) && ((this->pitch_y > -20) && (this->pitch_y < 15))  ){
                    x--; //L x-
               
                 
                }
                else if( ((this->yaw_z > -150) && (this->yaw_z < -88)) && ((this->roll_x > 70) && (this->roll_x < 110)) && ((this->pitch_y > -20) && (this->pitch_y < 35))){
                    z++; //T z+
                 
                
                    
                }
                else if( ((this->yaw_z > -125) && (this->yaw_z < -100)) && ((this->roll_x > -100) && (this->roll_x < -75)) && ((this->pitch_y > -25) && (this->pitch_y < 35))){
                    z--; //D z-
         
                   
                }
                
                else if( ((this->yaw_z > -80) && (this->yaw_z < -40)) && ((this->roll_x > 160) || (this->roll_x < -160)) && ((this->pitch_y > -15) && (this->pitch_y < 15))){
                    y++; 
      
                   
                }
                else if( ((this->yaw_z > 160) || (this->yaw_z < -165)) &&  ((this->roll_x > 165) || (this->roll_x < -165)) && ((this->pitch_y > -10) && (this->pitch_y < 10))  ){
                    x++; 
       
                    }
                else if( ((this->yaw_z > 100) && (this->yaw_z < 130)) && ((this->roll_x > 165) || (this->roll_x < -165)) && ((this->pitch_y > -20) && (this->pitch_y < 15))){
                    y--; 
              
                    }
                else if( ((this->yaw_z > 45) && (this->yaw_z < 65)) && ((this->roll_x > 165) || (this->roll_x < -165)) && ((this->pitch_y > -15) && (this->pitch_y < 15))  ){
                    x--; //L x-
       
                 
                }
                else
                {
                    return false;
                }
                this->X_pos = x;
                this->Y_pos = y;
                this->Z_pos = z;
                return true ;
         }   
    
      void bmuimu::update() {
                
                a.Update();
                this->yaw_z = a.Yaw();
                this->pitch_y = a.Pitch();
                this->roll_x = a.Roll();
       
       }
       
       
    int bmuimu::GetX()
    {
        return X_pos;   
    }
    
    int bmuimu::GetY()
    {
        return Y_pos;   
    }
    
    int bmuimu::GetZ()
    {
        return Z_pos;   
    }
    
    int bmuimu::Rotate(){
  
        if(this->yaw_z >= 0){
            if((this->yaw_z <= 45) && (this->yaw_z >= 0)){
                return 0;
                }
            if((this->yaw_z <= 90) && (this->yaw_z >= 46)){
                return 90;
                }
            if((this->yaw_z <= 135) && (this->yaw_z >= 91)){
                return -90;
                }
            if((this->yaw_z <= 180) && (this->yaw_z >= 136)){
                return 180;
                }
            }
        else{
            if((this->yaw_z <= 0) && (this->yaw_z >= -45)){
                return 180;
                }
            if((this->yaw_z <= -46) && (this->yaw_z >= -90)){
                return -90;
                }
            if((this->yaw_z <= -91) && (this->yaw_z >= -135)){
                return 90;
                }
            if((this->yaw_z <= -136) && (this->yaw_z >= -180)){
                return 0;
                }
        }
    }
    
    void bmuimu:: stard(){
        this->stard_x = this->roll_x;
        this->stard_y = this->pitch_y;
        this->stard_z = this->yaw_z;
        }
    
    
    
    
    
    
    };//class