加速度・ジャイロセンサ―

Fork of MPU-6050 by SSSRC 2016s

Revision:
4:88b9eb734fca
Parent:
3:1e6e76e5348f
Child:
5:15198869706e
--- a/MPU6050.h	Sat May 14 11:52:13 2016 +0000
+++ b/MPU6050.h	Sun May 15 06:24:43 2016 +0000
@@ -23,127 +23,6 @@
 protected:
 
 public:
-// Define registers per MPU6050, Register Map and Descriptions, Rev 4.2, 08/19/2013 6 DOF Motion sensor fusion device
-// Invensense Inc., www.invensense.com
-// See also MPU-6050 Register Map and Descriptions, Revision 4.0, RM-MPU-6050A-00, 9/12/2012 for registers not listed in
-// above document; the MPU6050 and MPU 9150 are virtually identical but the latter has an on-board magnetic sensor
-    enum register_adr{
-        XGOFFS_TC           = 0x00, // Bit 7 PWR_MODE, bits 6:1 XG_OFFS_TC, bit 0 OTP_BNK_VLD
-        YGOFFS_TC           = 0x01,
-        ZGOFFS_TC           = 0x02,
-        X_FINE_GAIN         = 0x03, // [7:0] fine gain
-        Y_FINE_GAIN         = 0x04,
-        Z_FINE_GAIN         = 0x05,
-        XA_OFFSET_H         = 0x06, // User-defined trim values for accelerometer
-        XA_OFFSET_L_TC      = 0x07,
-        YA_OFFSET_H         = 0x08,
-        YA_OFFSET_L_TC      = 0x09,
-        ZA_OFFSET_H         = 0x0A,
-        ZA_OFFSET_L_TC      = 0x0B,
-        SELF_TEST_X         = 0x0D,
-        SELF_TEST_Y         = 0x0E,
-        SELF_TEST_Z         = 0x0F,
-        SELF_TEST_A         = 0x10,
-        XG_OFFS_USRH        = 0x13, // User-defined trim values for gyroscope; supported in MPU-6050?
-        XG_OFFS_USRL        = 0x14,
-        YG_OFFS_USRH        = 0x15,
-        YG_OFFS_USRL        = 0x16,
-        ZG_OFFS_USRH        = 0x17,
-        ZG_OFFS_USRL        = 0x18,
-        SMPLRT_DIV          = 0x19,
-        CONFIG              = 0x1A,
-        GYRO_CONFIG         = 0x1B,
-        ACCEL_CONFIG        = 0x1C,
-        FF_THR              = 0x1D, // Free-fall
-        FF_DUR              = 0x1E, // Free-fall
-        MOT_THR             = 0x1F, // Motion detection threshold bits [7:0]
-        MOT_DUR             = 0x20, // Duration counter threshold for motion interrupt generation, 1 kHz rate, LSB = 1 ms
-        ZMOT_THR            = 0x21, // Zero-motion detection threshold bits [7:0]
-        ZRMOT_DUR           = 0x22, // Duration counter threshold for zero motion interrupt generation, 16 Hz rate, LSB = 64 ms
-        FIFO_EN             = 0x23,
-        I2C_MST_CTRL        = 0x24,
-        I2C_SLV0_ADDR       = 0x25,
-        I2C_SLV0_REG        = 0x26,
-        I2C_SLV0_CTRL       = 0x27,
-        I2C_SLV1_ADDR       = 0x28,
-        I2C_SLV1_REG        = 0x29,
-        I2C_SLV1_CTRL       = 0x2A,
-        I2C_SLV2_ADDR       = 0x2B,
-        I2C_SLV2_REG        = 0x2C,
-        I2C_SLV2_CTRL       = 0x2D,
-        I2C_SLV3_ADDR       = 0x2E,
-        I2C_SLV3_REG        = 0x2F,
-        I2C_SLV3_CTRL       = 0x30,
-        I2C_SLV4_ADDR       = 0x31,
-        I2C_SLV4_REG        = 0x32,
-        I2C_SLV4_DO         = 0x33,
-        I2C_SLV4_CTRL       = 0x34,
-        I2C_SLV4_DI         = 0x35,
-        I2C_MST_STATUS      = 0x36,
-        INT_PIN_CFG         = 0x37,
-        INT_ENABLE          = 0x38,
-        DMP_INT_STATUS      = 0x39, // Check DMP interrupt
-        INT_STATUS          = 0x3A,
-        ACCEL_XOUT_H        = 0x3B,
-        ACCEL_XOUT_L        = 0x3C,
-        ACCEL_YOUT_H        = 0x3D,
-        ACCEL_YOUT_L        = 0x3E,
-        ACCEL_ZOUT_H        = 0x3F,
-        ACCEL_ZOUT_L        = 0x40,
-        TEMP_OUT_H          = 0x41,
-        TEMP_OUT_L          = 0x42,
-        GYRO_XOUT_H         = 0x43,
-        GYRO_XOUT_L         = 0x44,
-        GYRO_YOUT_H         = 0x45,
-        GYRO_YOUT_L         = 0x46,
-        GYRO_ZOUT_H         = 0x47,
-        GYRO_ZOUT_L         = 0x48,
-        EXT_SENS_DATA_00    = 0x49,
-        EXT_SENS_DATA_01    = 0x4A,
-        EXT_SENS_DATA_02    = 0x4B,
-        EXT_SENS_DATA_03    = 0x4C,
-        EXT_SENS_DATA_04    = 0x4D,
-        EXT_SENS_DATA_05    = 0x4E,
-        EXT_SENS_DATA_06    = 0x4F,
-        EXT_SENS_DATA_07    = 0x50,
-        EXT_SENS_DATA_08    = 0x51,
-        EXT_SENS_DATA_09    = 0x52,
-        EXT_SENS_DATA_10    = 0x53,
-        EXT_SENS_DATA_11    = 0x54,
-        EXT_SENS_DATA_12    = 0x55,
-        EXT_SENS_DATA_13    = 0x56,
-        EXT_SENS_DATA_14    = 0x57,
-        EXT_SENS_DATA_15    = 0x58,
-        EXT_SENS_DATA_16    = 0x59,
-        EXT_SENS_DATA_17    = 0x5A,
-        EXT_SENS_DATA_18    = 0x5B,
-        EXT_SENS_DATA_19    = 0x5C,
-        EXT_SENS_DATA_20    = 0x5D,
-        EXT_SENS_DATA_21    = 0x5E,
-        EXT_SENS_DATA_22    = 0x5F,
-        EXT_SENS_DATA_23    = 0x60,
-        MOT_DETECT_STATUS   = 0x61,
-        I2C_SLV0_DO         = 0x63,
-        I2C_SLV1_DO         = 0x64,
-        I2C_SLV2_DO         = 0x65,
-        I2C_SLV3_DO         = 0x66,
-        I2C_MST_DELAY_CTRL  = 0x67,
-        SIGNAL_PATH_RESET   = 0x68,
-        MOT_DETECT_CTRL     = 0x69,
-        USER_CTRL           = 0x6A, // Bit 7 enable DMP, bit 3 reset DMP
-        PWR_MGMT_1          = 0x6B, // Device defaults to the SLEEP mode
-        PWR_MGMT_2          = 0x6C,
-        DMP_BANK            = 0x6D, // Activates a specific bank in the DMP
-        DMP_RW_PNT          = 0x6E, // Set read/write pointer to a specific start address in specified DMP bank
-        DMP_REG             = 0x6F, // Register in DMP from which to read or to which to write
-        DMP_REG_1           = 0x70,
-        DMP_REG_2           = 0x71,
-        FIFO_COUNTH         = 0x72,
-        FIFO_COUNTL         = 0x73,
-        FIFO_R_W            = 0x74,
-        WHO_AM_I_MPU6050    = 0x75, // Should return 0x68
-    };
-
     // Set initial input parameters
     enum Ascale {
         AFS_2G = 0,
@@ -249,7 +128,6 @@
 
     void readAccelData(int16_t * destination) {
         /** 加速度の読み出し
-         *
          *  @param destination int[3]の配列を渡してください、加速度をxyz順に返します
          */
         uint8_t rawData[6];  // x/y/z accel register data stored here
@@ -261,7 +139,6 @@
 
     void readGyroData(int16_t * destination) {
         /** 角速度の読み出し
-         *
          *  @param destination int[3]の配列を渡してください、角速度をxyz順に返します
          */
         uint8_t rawData[6];  // x/y/z gyro register data stored here
@@ -273,7 +150,6 @@
 
     int16_t readTempData() {
         /** 温度の読み出し
-         *
          *  @return int型の変数に代入してください、温度を返します
          */
         uint8_t rawData[2];  // x/y/z gyro register data stored here
@@ -668,6 +544,127 @@
     }
     
 private:
+// Define registers per MPU6050, Register Map and Descriptions, Rev 4.2, 08/19/2013 6 DOF Motion sensor fusion device
+// Invensense Inc., www.invensense.com
+// See also MPU-6050 Register Map and Descriptions, Revision 4.0, RM-MPU-6050A-00, 9/12/2012 for registers not listed in
+// above document; the MPU6050 and MPU 9150 are virtually identical but the latter has an on-board magnetic sensor
+    enum register_adr{
+        XGOFFS_TC           = 0x00, // Bit 7 PWR_MODE, bits 6:1 XG_OFFS_TC, bit 0 OTP_BNK_VLD
+        YGOFFS_TC           = 0x01,
+        ZGOFFS_TC           = 0x02,
+        X_FINE_GAIN         = 0x03, // [7:0] fine gain
+        Y_FINE_GAIN         = 0x04,
+        Z_FINE_GAIN         = 0x05,
+        XA_OFFSET_H         = 0x06, // User-defined trim values for accelerometer
+        XA_OFFSET_L_TC      = 0x07,
+        YA_OFFSET_H         = 0x08,
+        YA_OFFSET_L_TC      = 0x09,
+        ZA_OFFSET_H         = 0x0A,
+        ZA_OFFSET_L_TC      = 0x0B,
+        SELF_TEST_X         = 0x0D,
+        SELF_TEST_Y         = 0x0E,
+        SELF_TEST_Z         = 0x0F,
+        SELF_TEST_A         = 0x10,
+        XG_OFFS_USRH        = 0x13, // User-defined trim values for gyroscope; supported in MPU-6050?
+        XG_OFFS_USRL        = 0x14,
+        YG_OFFS_USRH        = 0x15,
+        YG_OFFS_USRL        = 0x16,
+        ZG_OFFS_USRH        = 0x17,
+        ZG_OFFS_USRL        = 0x18,
+        SMPLRT_DIV          = 0x19,
+        CONFIG              = 0x1A,
+        GYRO_CONFIG         = 0x1B,
+        ACCEL_CONFIG        = 0x1C,
+        FF_THR              = 0x1D, // Free-fall
+        FF_DUR              = 0x1E, // Free-fall
+        MOT_THR             = 0x1F, // Motion detection threshold bits [7:0]
+        MOT_DUR             = 0x20, // Duration counter threshold for motion interrupt generation, 1 kHz rate, LSB = 1 ms
+        ZMOT_THR            = 0x21, // Zero-motion detection threshold bits [7:0]
+        ZRMOT_DUR           = 0x22, // Duration counter threshold for zero motion interrupt generation, 16 Hz rate, LSB = 64 ms
+        FIFO_EN             = 0x23,
+        I2C_MST_CTRL        = 0x24,
+        I2C_SLV0_ADDR       = 0x25,
+        I2C_SLV0_REG        = 0x26,
+        I2C_SLV0_CTRL       = 0x27,
+        I2C_SLV1_ADDR       = 0x28,
+        I2C_SLV1_REG        = 0x29,
+        I2C_SLV1_CTRL       = 0x2A,
+        I2C_SLV2_ADDR       = 0x2B,
+        I2C_SLV2_REG        = 0x2C,
+        I2C_SLV2_CTRL       = 0x2D,
+        I2C_SLV3_ADDR       = 0x2E,
+        I2C_SLV3_REG        = 0x2F,
+        I2C_SLV3_CTRL       = 0x30,
+        I2C_SLV4_ADDR       = 0x31,
+        I2C_SLV4_REG        = 0x32,
+        I2C_SLV4_DO         = 0x33,
+        I2C_SLV4_CTRL       = 0x34,
+        I2C_SLV4_DI         = 0x35,
+        I2C_MST_STATUS      = 0x36,
+        INT_PIN_CFG         = 0x37,
+        INT_ENABLE          = 0x38,
+        DMP_INT_STATUS      = 0x39, // Check DMP interrupt
+        INT_STATUS          = 0x3A,
+        ACCEL_XOUT_H        = 0x3B,
+        ACCEL_XOUT_L        = 0x3C,
+        ACCEL_YOUT_H        = 0x3D,
+        ACCEL_YOUT_L        = 0x3E,
+        ACCEL_ZOUT_H        = 0x3F,
+        ACCEL_ZOUT_L        = 0x40,
+        TEMP_OUT_H          = 0x41,
+        TEMP_OUT_L          = 0x42,
+        GYRO_XOUT_H         = 0x43,
+        GYRO_XOUT_L         = 0x44,
+        GYRO_YOUT_H         = 0x45,
+        GYRO_YOUT_L         = 0x46,
+        GYRO_ZOUT_H         = 0x47,
+        GYRO_ZOUT_L         = 0x48,
+        EXT_SENS_DATA_00    = 0x49,
+        EXT_SENS_DATA_01    = 0x4A,
+        EXT_SENS_DATA_02    = 0x4B,
+        EXT_SENS_DATA_03    = 0x4C,
+        EXT_SENS_DATA_04    = 0x4D,
+        EXT_SENS_DATA_05    = 0x4E,
+        EXT_SENS_DATA_06    = 0x4F,
+        EXT_SENS_DATA_07    = 0x50,
+        EXT_SENS_DATA_08    = 0x51,
+        EXT_SENS_DATA_09    = 0x52,
+        EXT_SENS_DATA_10    = 0x53,
+        EXT_SENS_DATA_11    = 0x54,
+        EXT_SENS_DATA_12    = 0x55,
+        EXT_SENS_DATA_13    = 0x56,
+        EXT_SENS_DATA_14    = 0x57,
+        EXT_SENS_DATA_15    = 0x58,
+        EXT_SENS_DATA_16    = 0x59,
+        EXT_SENS_DATA_17    = 0x5A,
+        EXT_SENS_DATA_18    = 0x5B,
+        EXT_SENS_DATA_19    = 0x5C,
+        EXT_SENS_DATA_20    = 0x5D,
+        EXT_SENS_DATA_21    = 0x5E,
+        EXT_SENS_DATA_22    = 0x5F,
+        EXT_SENS_DATA_23    = 0x60,
+        MOT_DETECT_STATUS   = 0x61,
+        I2C_SLV0_DO         = 0x63,
+        I2C_SLV1_DO         = 0x64,
+        I2C_SLV2_DO         = 0x65,
+        I2C_SLV3_DO         = 0x66,
+        I2C_MST_DELAY_CTRL  = 0x67,
+        SIGNAL_PATH_RESET   = 0x68,
+        MOT_DETECT_CTRL     = 0x69,
+        USER_CTRL           = 0x6A, // Bit 7 enable DMP, bit 3 reset DMP
+        PWR_MGMT_1          = 0x6B, // Device defaults to the SLEEP mode
+        PWR_MGMT_2          = 0x6C,
+        DMP_BANK            = 0x6D, // Activates a specific bank in the DMP
+        DMP_RW_PNT          = 0x6E, // Set read/write pointer to a specific start address in specified DMP bank
+        DMP_REG             = 0x6F, // Register in DMP from which to read or to which to write
+        DMP_REG_1           = 0x70,
+        DMP_REG_2           = 0x71,
+        FIFO_COUNTH         = 0x72,
+        FIFO_COUNTL         = 0x73,
+        FIFO_R_W            = 0x74,
+        WHO_AM_I_MPU6050    = 0x75, // Should return 0x68
+    };
+    
     int _Gscale;
     int _Ascale;