dsafa

Dependencies:   mbed

Fork of IMU_oo by OX

main.cpp

Committer:
siwakon
Date:
2016-12-03
Revision:
0:77a7d1a1c6db
Child:
1:29b8881ac539

File content as of revision 0:77a7d1a1c6db:

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

ZMU9250 a;
Serial pc(D1, D0);

float yaw_z, pitch_y, roll_x;
int ir,ip,iy;
int l;
int xlr,yfb,ztd;
int sata;
char rt;

int cube1(int x, int y, int z);
int seccon(float roll ,float pitch, float yaw);
int round(int rt_x, int rt_y, int rt_z);


DigitalIn op_roll(USER_BUTTON);


int main(){

    while(1){
        wait(0.1);
        a.Update();
        yaw_z = a.Yaw();
        pitch_y = a.Pitch();
        roll_x = a.Roll();
        
//        pc.printf("Yaw_z %f\t Pitch_y %f\t Roll_x %f\n", yaw_z, pitch_y, roll_x);

//l = cube1(3,3,3);
         
        //pc.printf("%d\t Yaw_z %f\t Pitch_y %f\t Roll_x %f\n",l , yaw_z, pitch_y, roll_x);  //add
        
        pc.printf("%d\t Yaw_z %f\t Pitch_y %f\t Roll_x %f\t %d\t %c\t %d\t \r\n ",round(5,5,5), yaw_z, pitch_y, roll_x, sata, rt, l);                  //round
        
      //  pc.printf( "%d\n" ,seccon(roll_x, pitch_y, yaw_z));
//        pc.printf("========\n");                                      //it
        if(op_roll == 0){
            
         l = cube1(3,3,3);
            }
        
        
     }
 }
 
    int cube1(int x, int y, int z){
        
           if( ((pitch_y > -30) && (pitch_y < 30)) ){    // vCC L leg D
                 
                 if( ((yaw_z > 36) && (yaw_z < 113)) &&  ((roll_x > -40) && (roll_x < 40))   ){
                    x++; //R x+
                    xlr = 1;
                    
                
                } 
                 if( ((yaw_z > -101) && (yaw_z < 35)) &&  ((roll_x > -40) && (roll_x < 40))   ){
                    y--;  //B y+
                    yfb = -1;
                }
                 if( ((yaw_z > 110) && (yaw_z < 179)) && ((roll_x > -40) && (roll_x < 40))   ){
                    y++; //F y-
                    yfb = 1;
                
                }
                if( ((yaw_z > -180) && (yaw_z < -100)) && ((roll_x > -40) && (roll_x < 40))   ){
                    x--; //L x-
                    xlr = -1;
                 
                }
                if((roll_x > 41) && (roll_x < 130) ){
                    z++; //T z+
                    ztd = 1;
                    
                }
                if( (roll_x > -130) && (roll_x < -41)){
                    z--; //D z-
                    ztd = -1;
                   
                }
           
            }
          
       
       
       return (x*100+y*10+z); 
    }
    
    
    
    
    int seccon(float roll ,float pitch, float yaw){
        if(   ( ((yaw > -50) && (yaw < -30)) || ((yaw > -145) && (yaw < -125)) || ((yaw > 140) && (yaw < 160))||((yaw > 0) && (yaw < -20)) )
                 && ((roll_x > -10 )&& (roll_x < 10))
                && (( pitch > -10 )&&(pitch < 10))  //L T R D
            ){
            ir = roll;
            ip = pitch;
            iy = yaw;
            return 1;
            }
        else{
             return 0;   
                }
        }
        
        
    int round(int rt_x, int rt_y, int rt_z){
              
           if( (pitch_y > -30) && (pitch_y < 30) ){    // vCC L leg D
                 
                 if( ((yaw_z > 36) && (yaw_z < 113)) && ( ((roll_x > -40) && (roll_x < 40)) )  ){
                   //R x+
                    if(xlr == 1){
                        sata =  0;
                        rt = 'z';
                        }
                    else if(yfb == -1){
                        sata = 90; 
                        rt = 'z';
                        }
                    else if(yfb == 1){
                        sata = 270;
                        rt = 'z';
                        }
                    else if(xlr == -1){
                        sata = 180;
                        rt = 'z';
                        }
                    else if(ztd == 1){
                        sata = 270;       //x
                        rt = 'x';
                        }
                    else if(ztd == -1){
                        sata = 90;        //x
                        rt ='x';
                        }
                } 
                 if( ((yaw_z > -74) && (yaw_z < 35)) && ( ((roll_x > -40) && (roll_x < 40)) )  ){
                   //B y+
                    if(xlr == 1){
                        sata =  270;
                        rt = 'z';
                        }
                    else if(yfb == -1){
                        sata = 0;
                        rt = 'z'; 
                        }
                    else if(yfb == 1){
                        sata = 180;
                        rt = 'z';
                        }
                    else if(xlr == -1){
                        sata = 90;
                        rt = 'z';
                        }
                    else if(ztd == 1){
                        sata = 270; //x
                        rt = 'x';
                        }
                    else if(ztd == -1){
                        sata = 90; //x
                        rt = 'x';
                        }
                }
                 if( ((yaw_z > 110) && (yaw_z < 179)) &&( ((roll_x > -40) && (roll_x < 40)) )  ){
                    //F y-
                    if(xlr == 1){
                        sata =  90;
                        rt = 'z';
                        }
                    else if(yfb == -1){
                        sata = 180;
                        rt = 'z';
                        }
                    else if(yfb == 1){
                        sata = 0;
                        rt = 'z';
                        }
                    else if(xlr == -1){
                        sata = 270;
                        rt = 'z';
                        }
                    else if(ztd == 1){
                        sata = 90;
                        rt = 'x';
                        }
                    else if(ztd == -1){
                        sata = 270;
                        rt = 'x';
                        }
                }
                if( ((yaw_z > -180) && (yaw_z < -75)) &&( ((roll_x > -40) && (roll_x < 40)) )  ){
                    //L x-
                    if(xlr == 1){
                        sata =  180;
                        rt = 'z';
                        }
                    else if(yfb == -1){
                        sata = 270;
                        rt = 'z';
                        }
                    else if(yfb == 1){
                        sata = 90;
                        rt = 'z';
                        }
                    else if(xlr == -1){
                        sata = 0;
                        rt = 'z';
                        }
                    else if(ztd == 1){
                        sata = 90;
                        rt = 'x';
                        }
                    else if(ztd == -1){
                        sata = 270;
                        rt = 'x';
                        }
                }
                if((roll_x > 41) && (roll_x < 130) ){
                    //T z+
                    if(xlr == 1){
                        sata =  90; //x
                        rt = 'x';
                        }
                    else if(yfb == -1){
                        sata = 90; //y
                        rt = 'y';
                        }
                    else if(yfb == 1){
                        sata = 270;
                        rt = 'y';
                        }
                    else if(xlr == -1){
                        sata = 270;
                        rt = 'x';
                        }
                    else if(ztd == 1){
                        sata = 0;
                        rt = 'x';
                        }
                    else if(ztd == -1){
                        sata = 180;     //x
                        rt = 'x';
                        }
                }
                if( (roll_x > -130) && (roll_x < -41)){
                    //D z-
                    if(xlr == 1){
                        sata =  270;
                        rt = 'x';
                        }
                    else if(yfb == -1){
                        sata = 270;
                        rt = 'y'; 
                        }
                    else if(yfb == 1){
                        sata = 90;
                        rt = 'y';
                        }
                    else if(xlr == -1){
                        sata = 90;
                        rt = 'x';
                        }
                    else if(ztd == 1){
                        sata = 180;
                        rt = 'x';
                        }
                    else if(ztd == -1){
                        sata = 0 ; //x
                        rt = 'x';
                        }
           
                }
            }
          
       rt_x = rt_x - 3;
       rt_y = rt_y - 3;
       rt_z = rt_z - 3;
       if(rt == 'x'){
       rt_x = rt_x + 3;   //x
       rt_y = (rt_y * cos(sata*(PI/180))+ rt_z * sin(sata*(PI/180)) )+ 3;
       rt_z = (-rt_y * sin(sata*(PI/180))+ rt_z * cos(sata*(PI/180)) ) + 3;
       }
       if(rt == 'y'){
       rt_x = (rt_x * cos(sata*(PI/180)) - rt_z * sin(sata*(PI/180)) )+ 3;    // y
       rt_y = rt_y + 3;
       rt_z = (rt_x * sin(sata*(PI/180)) + rt_z * cos(sata*(PI/180)) )+ 3;
       }
       if(rt == 'z'){
       rt_x = (rt_x * cos(sata*(PI/180))+ rt_y * sin(sata*(PI/180)) )+ 3;    //z
       rt_y = (rt_y * cos(sata*(PI/180))- rt_x * sin(sata*(PI/180)) )+ 3;
       rt_z = rt_z + 3;
        }
    pc.printf("rt_x %d\t", rt_x);
    pc.printf("rt_y %d\t", rt_y);
    pc.printf("rt_z %d \n\n\n\n\r", rt_z);
    
       return (rt_x*100 + rt_y*10 + rt_z); 
       }