クオータニオンを出力してくれる9軸センサ,BNO055のライブラリ

Dependents:   SWAN_IZU2019_v1

Revision:
0:4c82133c291f
Child:
1:6de1be86a23f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BNO055_lib.h	Tue Jan 22 11:47:28 2019 +0000
@@ -0,0 +1,99 @@
+#ifndef BNO055_LIB_
+#define BNO055_LIB_
+
+#define BNO055_ADDR_LOW 0x28
+#define BNO055_ADDR_HIGH 0x29
+
+#define BNO055_CHIP_ID 0x00
+#define BNO055_PAGE_ID 0x07
+
+///////////////////////PAGE 0
+#define BNO055_ACC_DATA 0x08
+#define BNO055_MAG_DATA 0x0E
+#define BNO055_GYR_DATA 0x14
+#define BNO055_EUL_DATA 0x1A
+#define BNO055_QUA_DATA 0x20
+#define BNO055_LIA_DATA 0x28
+#define BNO055_GRV_DATA 0x2E
+
+#define BNO055_CALIB_STAT 0x35
+
+#define BNO055_OPR_MODE 0x3D
+#define BNO055_PWR_MODE 0x3E
+
+///////////////////////PAGE 1
+#define BNO055_ACC_CONFIG 0x08
+
+class BNO055_lib{
+    
+    public:
+    
+    typedef enum{
+        AD0_LOW = BNO055_ADDR_LOW,
+        AD0_HIGH = BNO055_ADDR_HIGH
+    }AD0;
+    
+    typedef enum{
+        _2G = 0x00,
+        _4G = 0x01,
+        _8G = 0x02,
+        _16G = 0x03
+    }ACC_RANGE;
+    
+    typedef enum{
+        CONFIG = 0x00,
+        ACCONLY = 0x01,
+        MAGONLY = 0x02,
+        GYROONLY = 0x03,
+        ACCMAG = 0x04,
+        ACCGYRO = 0x05,
+        MAGGYRO = 0x06,
+        AMG = 0x07,
+        IMU = 0x08,
+        COMPASS = 0x09,
+        M4G = 0x0A,
+        NDOF_FMC_OFF = 0x0B,
+        NDOF = 0x0C
+    }OPERATION_MODE;
+    
+    BNO055_lib(I2C &user_i2c, AD0 ad0);
+    int connectCheck();
+    void setAccRange(ACC_RANGE range);
+    void setOperationMode(OPERATION_MODE mode);
+    
+    void getAcc(float *acc);
+    void getAcc(double *acc);
+    void getMag(float *mag);
+    void getMag(double *mag);
+    void getGyro(float *gyro);
+    void getGyro(double *gyro);
+    void getAMG(float *amg);
+    void getAMG(double *amg);
+    
+    void getEuler(float *euler);
+    void getEuler(double *euler);
+    void getQuart(float *quart);
+    void getQuart(double *quart);
+    void getEulerFromQ(float *euler);
+    void getEulerFromQ(double *euler);
+    void getLinearAcc(float *lia);
+    void getLinearAcc(double *lia);
+    void getGravity(float *grv);
+    void getGravity(double *grv);
+    
+    
+    private:
+    
+    char slave;
+    I2C *i2c;
+    
+    char cmd[2];
+    char buff[18];
+    short data[4];
+    
+    double data_d[4];
+    double t0, t1, yy;
+};
+
+
+#endif
\ No newline at end of file