2020/8/24

Committer:
falconsyunya
Date:
Mon Aug 24 05:28:31 2020 +0000
Revision:
2:3058c35bdf80
Parent:
1:43c83e461ea4
2020/8/24;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
makidia 1:43c83e461ea4 1 /*
makidia 1:43c83e461ea4 2 宣言方法
makidia 1:43c83e461ea4 3 BMX055 bmx(SDA_pin,SCL_pin);
makidia 1:43c83e461ea4 4
makidia 1:43c83e461ea4 5 bmx.getAcc();
makidia 1:43c83e461ea4 6 bmx.getGyro();
makidia 1:43c83e461ea4 7 bmx.getMag(); で値をゲット!
makidia 1:43c83e461ea4 8
makidia 1:43c83e461ea4 9 値は
makidia 1:43c83e461ea4 10 bmx.accel[3];
makidia 1:43c83e461ea4 11 bmx.gyroscope[3];
makidia 1:43c83e461ea4 12 bmx.magnet[3]; に入っている!
makidia 1:43c83e461ea4 13
makidia 1:43c83e461ea4 14
makidia 1:43c83e461ea4 15
makidia 1:43c83e461ea4 16 用例-----------------------------------------------------------
makidia 1:43c83e461ea4 17 #include "mbed.h"
makidia 1:43c83e461ea4 18 #include "BMX055.h"
makidia 1:43c83e461ea4 19
makidia 1:43c83e461ea4 20
makidia 1:43c83e461ea4 21 BMX055 bmx(D14,D15); //SDA SCL
makidia 1:43c83e461ea4 22 DigitalOut myled(LED1);
makidia 1:43c83e461ea4 23 DigitalIn sw(PC_13);
makidia 1:43c83e461ea4 24 Timer t;
makidia 1:43c83e461ea4 25
makidia 1:43c83e461ea4 26 int main() {
makidia 1:43c83e461ea4 27 float preAngle=0, AngGyr=0, gy=0, acc[2]={0}, angleAccel=0;
makidia 1:43c83e461ea4 28 int angle=0, use_angle=0;
makidia 1:43c83e461ea4 29 const double dt = 0.01;
makidia 1:43c83e461ea4 30
makidia 1:43c83e461ea4 31 printf("\r\nrun\r\n");
makidia 1:43c83e461ea4 32
makidia 1:43c83e461ea4 33 while(sw==0){}
makidia 1:43c83e461ea4 34 while(sw==1){}
makidia 1:43c83e461ea4 35 while(1) {
makidia 1:43c83e461ea4 36
makidia 1:43c83e461ea4 37 // getAcc(accel);
makidia 1:43c83e461ea4 38 // printf("%2.4f, %2.4f, %2.4f\r\n",(accel[0]/512)*9.8,(accel[1]/512)*9.8,(accel[2]/512)*9.8);
makidia 1:43c83e461ea4 39 // getGyro(gyroscope);
makidia 1:43c83e461ea4 40 // printf("%2.4f, %2.4f, %2.4f\r\n",gyroscope[0]*125/2048,gyroscope[1]*125/2048,gyroscope[2]*125/2048);
makidia 1:43c83e461ea4 41 // getMag(magnet);
makidia 1:43c83e461ea4 42 // printf("%2.4f, %2.4f, %2.4f\r\n",magnet[0],magnet[1],magnet[2]);
makidia 1:43c83e461ea4 43
makidia 1:43c83e461ea4 44 bmx.getGyro();
makidia 1:43c83e461ea4 45
makidia 1:43c83e461ea4 46 while(sw==0){
makidia 1:43c83e461ea4 47 angle=0;
makidia 1:43c83e461ea4 48 use_angle=0;
makidia 1:43c83e461ea4 49 printf("Setting now!\r\n");
makidia 1:43c83e461ea4 50 }
makidia 1:43c83e461ea4 51
makidia 1:43c83e461ea4 52 gy=bmx.gyroscope[2]*125/2048;
makidia 1:43c83e461ea4 53 angleAccel=bmx.gyroscope[2]*125/2560;
makidia 1:43c83e461ea4 54 AngGyr = preAngle+gy*dt;
makidia 1:43c83e461ea4 55 angle = (int)(0.905*AngGyr+0.09*angleAccel); //回転の検知幅小さくすると遅いのができて、大きくすると早いのができる
makidia 1:43c83e461ea4 56 //回転の検知制度を調整:上と反比例
makidia 1:43c83e461ea4 57 use_angle += angle;
makidia 1:43c83e461ea4 58
makidia 1:43c83e461ea4 59 printf("%3d\r\n", use_angle/48);
makidia 1:43c83e461ea4 60 preAngle=angle;
makidia 1:43c83e461ea4 61 acc[1]=acc[0];
makidia 1:43c83e461ea4 62
makidia 1:43c83e461ea4 63 wait(dt);
makidia 1:43c83e461ea4 64 }
makidia 1:43c83e461ea4 65 }
makidia 1:43c83e461ea4 66 ----------------------------------------------------------------------
makidia 1:43c83e461ea4 67 回転角がわかるよV
makidia 1:43c83e461ea4 68 */
makidia 1:43c83e461ea4 69
makidia 0:d56d821617b6 70 #ifndef BMX055_H_
makidia 0:d56d821617b6 71 #define BMX055_H_
makidia 0:d56d821617b6 72
makidia 0:d56d821617b6 73 #define ACC 0x19<<1
makidia 0:d56d821617b6 74 #define GYRO 0x69<<1
makidia 0:d56d821617b6 75 #define MAG 0x13<<1
makidia 0:d56d821617b6 76
makidia 0:d56d821617b6 77 class BMX055
makidia 0:d56d821617b6 78 {
makidia 0:d56d821617b6 79 public:
makidia 0:d56d821617b6 80 BMX055(PinName SDA, PinName SCL);
makidia 0:d56d821617b6 81 float accel[3];
makidia 0:d56d821617b6 82 float gyroscope[3];
makidia 0:d56d821617b6 83 float magnet[3];
makidia 0:d56d821617b6 84 void getAcc(void);
makidia 0:d56d821617b6 85 void getGyro(void);
makidia 0:d56d821617b6 86 void getMag(void);
makidia 0:d56d821617b6 87 private:
makidia 0:d56d821617b6 88 I2C bmx055;
makidia 0:d56d821617b6 89 void bmx_init(void);
makidia 0:d56d821617b6 90 };
makidia 0:d56d821617b6 91
makidia 0:d56d821617b6 92 #endif /* BMX055_H_ */