MAKOTO MOTOYAMA / Lab4-04_detect_angular_velocity
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BMX055.h Source File

BMX055.h

00001 /*
00002 宣言方法
00003 BMX055 bmx(SDA_pin,SCL_pin);
00004 
00005 bmx.getAcc();
00006 bmx.getGyro();
00007 bmx.getMag();    で値をゲット!
00008 
00009 値は
00010 bmx.accel[3];
00011 bmx.gyroscope[3];
00012 bmx.magnet[3];      に入っている!
00013 
00014 
00015 
00016 用例-----------------------------------------------------------
00017 #include "mbed.h"
00018 #include "BMX055.h"
00019 
00020 
00021 BMX055 bmx(D14,D15);  //SDA SCL
00022 DigitalOut myled(LED1);
00023 DigitalIn sw(PC_13);
00024 Timer t;
00025 
00026 int main() {
00027     float   preAngle=0, AngGyr=0, gy=0, acc[2]={0}, angleAccel=0;
00028     int angle=0, use_angle=0;
00029     const double dt = 0.01;
00030     
00031     printf("\r\nrun\r\n");
00032     
00033     while(sw==0){}
00034     while(sw==1){}
00035     while(1) {
00036         
00037 //        getAcc(accel);
00038 //        printf("%2.4f, %2.4f, %2.4f\r\n",(accel[0]/512)*9.8,(accel[1]/512)*9.8,(accel[2]/512)*9.8);
00039 //        getGyro(gyroscope);
00040 //        printf("%2.4f, %2.4f, %2.4f\r\n",gyroscope[0]*125/2048,gyroscope[1]*125/2048,gyroscope[2]*125/2048);       
00041 //        getMag(magnet);
00042 //        printf("%2.4f, %2.4f, %2.4f\r\n",magnet[0],magnet[1],magnet[2]);
00043 
00044         bmx.getGyro();
00045         
00046         while(sw==0){
00047             angle=0; 
00048             use_angle=0;
00049             printf("Setting now!\r\n");
00050         }
00051         
00052         gy=bmx.gyroscope[2]*125/2048; 
00053         angleAccel=bmx.gyroscope[2]*125/2560;
00054         AngGyr = preAngle+gy*dt; 
00055         angle = (int)(0.905*AngGyr+0.09*angleAccel);   //回転の検知幅小さくすると遅いのができて、大きくすると早いのができる
00056                                                     //回転の検知制度を調整:上と反比例
00057         use_angle += angle;
00058         
00059         printf("%3d\r\n", use_angle/48);
00060         preAngle=angle;
00061         acc[1]=acc[0];
00062 
00063         wait(dt); 
00064     }    
00065 }
00066 ----------------------------------------------------------------------
00067 回転角がわかるよV
00068 */
00069 
00070 #ifndef BMX055_H_
00071 #define BMX055_H_
00072 
00073 #define ACC 0x19<<1
00074 #define GYRO 0x69<<1
00075 #define MAG 0x13<<1
00076 
00077 class BMX055
00078 {
00079     public:
00080         BMX055(PinName SDA, PinName SCL);
00081         float accel[3];
00082         float gyroscope[3];
00083         float magnet[3];
00084         void getAcc(void);
00085         void getGyro(void);
00086         void getMag(void);
00087     private:
00088         I2C bmx055;
00089         void bmx_init(void);
00090 };
00091 
00092 #endif /* BMX055_H_ */