mbed library for Bosch BMX055 sensor

Dependents:   Auto_pilot_prototype_3_2 Auto_pilot_prototype_3_2_os_2

Committer:
Joeatsumi
Date:
Sat Jul 25 11:02:21 2020 +0000
Revision:
1:b387585de3b5
Parent:
0:3df2d4d2d393
This is a modified library of BMX055. This enables us to use BMX055 and BME280 sensor with a I2c bus.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Joeatsumi 0:3df2d4d2d393 1 #include "mbed.h"
Joeatsumi 0:3df2d4d2d393 2
Joeatsumi 0:3df2d4d2d393 3 #define GYRO_ADDRESS 0x69
Joeatsumi 0:3df2d4d2d393 4 #define ACC_ADDRESS 0x19
Joeatsumi 0:3df2d4d2d393 5 #define MAG_ADDRESS 0x13
Joeatsumi 0:3df2d4d2d393 6
Joeatsumi 1:b387585de3b5 7 #define PRES_ADDRESS 0x76
Joeatsumi 1:b387585de3b5 8
Joeatsumi 0:3df2d4d2d393 9 #define MAG_SOFT_RESET 0x4B
Joeatsumi 0:3df2d4d2d393 10 #define MAG_ENEBLE 0x4E
Joeatsumi 0:3df2d4d2d393 11
Joeatsumi 0:3df2d4d2d393 12 #define GYRO_X_L 0x04
Joeatsumi 0:3df2d4d2d393 13 #define GYRO_X_H 0x05
Joeatsumi 0:3df2d4d2d393 14 #define GYRO_Y_L 0x02
Joeatsumi 0:3df2d4d2d393 15 #define GYRO_Y_H 0x03
Joeatsumi 0:3df2d4d2d393 16 #define GYRO_Z_L 0x06
Joeatsumi 0:3df2d4d2d393 17 #define GYRO_Z_H 0x07
Joeatsumi 0:3df2d4d2d393 18
Joeatsumi 0:3df2d4d2d393 19 #define ACC_X_L 0x04
Joeatsumi 0:3df2d4d2d393 20 #define ACC_X_H 0x05
Joeatsumi 0:3df2d4d2d393 21 #define ACC_Y_L 0x02
Joeatsumi 0:3df2d4d2d393 22 #define ACC_Y_H 0x03
Joeatsumi 0:3df2d4d2d393 23 #define ACC_Z_L 0x06
Joeatsumi 0:3df2d4d2d393 24 #define ACC_Z_H 0x07
Joeatsumi 0:3df2d4d2d393 25
Joeatsumi 0:3df2d4d2d393 26 #define MAG_X_L 0x42
Joeatsumi 0:3df2d4d2d393 27 #define MAG_X_H 0x43
Joeatsumi 0:3df2d4d2d393 28 #define MAG_Y_L 0x44
Joeatsumi 0:3df2d4d2d393 29 #define MAG_Y_H 0x45
Joeatsumi 0:3df2d4d2d393 30 #define MAG_Z_L 0x46
Joeatsumi 0:3df2d4d2d393 31 #define MAG_Z_H 0x47
Joeatsumi 0:3df2d4d2d393 32
Joeatsumi 0:3df2d4d2d393 33
Joeatsumi 0:3df2d4d2d393 34 #define GYRO_RANGE_SET 0x0f
Joeatsumi 0:3df2d4d2d393 35 #define ACC_RANGE_SET 0x0f
Joeatsumi 0:3df2d4d2d393 36
Joeatsumi 1:b387585de3b5 37
Joeatsumi 1:b387585de3b5 38 #define CTRL_HUM 0xf2
Joeatsumi 1:b387585de3b5 39 #define CTRL_MEAS 0xf4
Joeatsumi 1:b387585de3b5 40 #define CONFIG 0xf5
Joeatsumi 1:b387585de3b5 41
Joeatsumi 1:b387585de3b5 42 #define DIG_T1_LOW_REGS 0x88 // read dig_T1 regs
Joeatsumi 1:b387585de3b5 43 #define DIG_T1_HIGH_REGS 0x89 // read dig_T1 regs
Joeatsumi 1:b387585de3b5 44 #define DIG_T2_LOW_REGS 0x8a // read dig_T2 regs
Joeatsumi 1:b387585de3b5 45 #define DIG_T2_HIGH_REGS 0x8b // read dig_T2 regs
Joeatsumi 1:b387585de3b5 46 #define DIG_T3_LOW_REGS 0x8c // read dig_T3 regs
Joeatsumi 1:b387585de3b5 47 #define DIG_T3_HIGH_REGS 0x8d // read dig_T3 regs
Joeatsumi 1:b387585de3b5 48
Joeatsumi 1:b387585de3b5 49 #define DIG_P1_LOW_REGS 0x8e // read dig_P1 regs
Joeatsumi 1:b387585de3b5 50 #define DIG_P1_HIGH_REGS 0x8f // read dig_P1 regs
Joeatsumi 1:b387585de3b5 51 #define DIG_P2_LOW_REGS 0x90 // read dig_P2 regs
Joeatsumi 1:b387585de3b5 52 #define DIG_P2_HIGH_REGS 0x91 // read dig_P2 regs
Joeatsumi 1:b387585de3b5 53 #define DIG_P3_LOW_REGS 0x92 // read dig_P3 regs
Joeatsumi 1:b387585de3b5 54 #define DIG_P3_HIGH_REGS 0x93 // read dig_P3 regs
Joeatsumi 1:b387585de3b5 55 #define DIG_P4_LOW_REGS 0x94 // read dig_P4 regs
Joeatsumi 1:b387585de3b5 56 #define DIG_P4_HIGH_REGS 0x95 // read dig_P4 regs
Joeatsumi 1:b387585de3b5 57 #define DIG_P5_LOW_REGS 0x96 // read dig_P5 regs
Joeatsumi 1:b387585de3b5 58 #define DIG_P5_HIGH_REGS 0x97 // read dig_P5 regs
Joeatsumi 1:b387585de3b5 59 #define DIG_P6_LOW_REGS 0x98 // read dig_P6 regs
Joeatsumi 1:b387585de3b5 60 #define DIG_P6_HIGH_REGS 0x99 // read dig_P6 regs
Joeatsumi 1:b387585de3b5 61 #define DIG_P7_LOW_REGS 0x9a // read dig_P7 regs
Joeatsumi 1:b387585de3b5 62 #define DIG_P7_HIGH_REGS 0x9b // read dig_P7 regs
Joeatsumi 1:b387585de3b5 63 #define DIG_P8_LOW_REGS 0x9c // read dig_P8 regs
Joeatsumi 1:b387585de3b5 64 #define DIG_P8_HIGH_REGS 0x9d // read dig_P8 regs
Joeatsumi 1:b387585de3b5 65 #define DIG_P9_LOW_REGS 0x9e // read dig_P9 regs
Joeatsumi 1:b387585de3b5 66 #define DIG_P9_HIGH_REGS 0x9f // read dig_P9 regs
Joeatsumi 1:b387585de3b5 67
Joeatsumi 1:b387585de3b5 68 #define HUD_H1_REGS 0xA1 // read dig_H1 regs
Joeatsumi 1:b387585de3b5 69 #define HUD_H2_LOW_REGS 0xe1 // read dig_H2 regs
Joeatsumi 1:b387585de3b5 70 #define HUD_H2_HIGH_REGS 0xe2 // read dig_H2 regs
Joeatsumi 1:b387585de3b5 71 #define HUD_H3_REGS 0xe3 // read dig_H3 regs
Joeatsumi 1:b387585de3b5 72 #define HUD_H4_LOW_REGS 0xe5 // read dig_H4 regs and HIGh of H5
Joeatsumi 1:b387585de3b5 73 #define HUD_H4_HIGH_REGS 0xe4 // read dig_H4 regs
Joeatsumi 1:b387585de3b5 74 #define HUD_H5_HIGH_REGS 0xe6 // read dig_H5 regs
Joeatsumi 1:b387585de3b5 75 #define HUD_H6_REGS 0xe7 // read dig_H6 regs
Joeatsumi 1:b387585de3b5 76
Joeatsumi 1:b387585de3b5 77 #define TEMP_MSB 0xFa
Joeatsumi 1:b387585de3b5 78 #define TEMP_LSB 0xFb
Joeatsumi 1:b387585de3b5 79 #define TEMP_XLSB 0xFc
Joeatsumi 1:b387585de3b5 80
Joeatsumi 1:b387585de3b5 81 #define PRES_MSB 0xF7
Joeatsumi 1:b387585de3b5 82 #define PRES_LSB 0xF8
Joeatsumi 1:b387585de3b5 83 #define PRES_XLSB 0xF9
Joeatsumi 1:b387585de3b5 84
Joeatsumi 1:b387585de3b5 85 #define HUM_MSB 0xFd
Joeatsumi 1:b387585de3b5 86 #define HUM_LSB 0xFe
Joeatsumi 1:b387585de3b5 87
Joeatsumi 0:3df2d4d2d393 88 class test_BMX055
Joeatsumi 0:3df2d4d2d393 89 {
Joeatsumi 0:3df2d4d2d393 90 public:
Joeatsumi 1:b387585de3b5 91 /*
Joeatsumi 1:b387585de3b5 92 test_BMX055::test_BMX055(PinName sda,PinName scl, char slave_adr):i2c(sda ,scl),address(slave_adr){
Joeatsumi 1:b387585de3b5 93 */
Joeatsumi 1:b387585de3b5 94 //test_BMX055(PinName sda,PinName scl, char slave_adr);
Joeatsumi 1:b387585de3b5 95 //~test_BMX055();
Joeatsumi 1:b387585de3b5 96
Joeatsumi 1:b387585de3b5 97 test_BMX055(I2C &i2c_obj, char slave_adr);
Joeatsumi 0:3df2d4d2d393 98 ~test_BMX055();
Joeatsumi 1:b387585de3b5 99
Joeatsumi 0:3df2d4d2d393 100 void i2c_mem_write(int device_address, int mem_address, int mem_data);
Joeatsumi 0:3df2d4d2d393 101 int i2c_mem_read(int device_address, int mem_address);
Joeatsumi 0:3df2d4d2d393 102
Joeatsumi 0:3df2d4d2d393 103 void set_gyro_range(int range);
Joeatsumi 0:3df2d4d2d393 104 void set_acc_range(int range);
Joeatsumi 0:3df2d4d2d393 105
Joeatsumi 0:3df2d4d2d393 106 void reset_mag();
Joeatsumi 0:3df2d4d2d393 107 void initiate_mag();
Joeatsumi 0:3df2d4d2d393 108
Joeatsumi 0:3df2d4d2d393 109 float get_gyro_x_data(void);
Joeatsumi 0:3df2d4d2d393 110 float get_gyro_y_data(void);
Joeatsumi 0:3df2d4d2d393 111 float get_gyro_z_data(void);
Joeatsumi 0:3df2d4d2d393 112
Joeatsumi 0:3df2d4d2d393 113 float get_acc_x_data(void);
Joeatsumi 0:3df2d4d2d393 114 float get_acc_y_data(void);
Joeatsumi 0:3df2d4d2d393 115 float get_acc_z_data(void);
Joeatsumi 0:3df2d4d2d393 116
Joeatsumi 0:3df2d4d2d393 117 float get_mag_x_data(void);
Joeatsumi 0:3df2d4d2d393 118 float get_mag_y_data(void);
Joeatsumi 0:3df2d4d2d393 119 float get_mag_z_data(void);
Joeatsumi 1:b387585de3b5 120
Joeatsumi 1:b387585de3b5 121
Joeatsumi 1:b387585de3b5 122 //void initiate_pres(void);
Joeatsumi 1:b387585de3b5 123 void initialize(void);
Joeatsumi 1:b387585de3b5 124 /** Read the current temperature value (degree Celsius) from BME280 sensor
Joeatsumi 1:b387585de3b5 125 *
Joeatsumi 1:b387585de3b5 126 */
Joeatsumi 1:b387585de3b5 127 float getTemperature(void);
Joeatsumi 1:b387585de3b5 128
Joeatsumi 1:b387585de3b5 129 /** Read the current pressure value (hectopascal)from BME280 sensor
Joeatsumi 1:b387585de3b5 130 *
Joeatsumi 1:b387585de3b5 131 */
Joeatsumi 1:b387585de3b5 132 float getPressure(void);
Joeatsumi 1:b387585de3b5 133
Joeatsumi 1:b387585de3b5 134 /** Read the current humidity value (humidity %) from BME280 sensor
Joeatsumi 1:b387585de3b5 135 *
Joeatsumi 1:b387585de3b5 136 */
Joeatsumi 1:b387585de3b5 137 float getHumidity(void);
Joeatsumi 1:b387585de3b5 138
Joeatsumi 1:b387585de3b5 139
Joeatsumi 0:3df2d4d2d393 140 private:
Joeatsumi 0:3df2d4d2d393 141
Joeatsumi 1:b387585de3b5 142 //I2C i2c;
Joeatsumi 0:3df2d4d2d393 143 int currentAcceleroRange;
Joeatsumi 0:3df2d4d2d393 144 int currentGyroRange;
Joeatsumi 0:3df2d4d2d393 145 float gyro_scale_factor;
Joeatsumi 0:3df2d4d2d393 146 int acc_scale_factor;
Joeatsumi 0:3df2d4d2d393 147 float gravity;
Joeatsumi 0:3df2d4d2d393 148 float RAD_TO_DEG;
Joeatsumi 1:b387585de3b5 149
Joeatsumi 1:b387585de3b5 150 I2C *i2c_p;
Joeatsumi 1:b387585de3b5 151 I2C &i2c;
Joeatsumi 1:b387585de3b5 152
Joeatsumi 1:b387585de3b5 153 char address;
Joeatsumi 1:b387585de3b5 154 uint16_t dig_T1;
Joeatsumi 1:b387585de3b5 155 int16_t dig_T2, dig_T3;
Joeatsumi 1:b387585de3b5 156 uint16_t dig_P1;
Joeatsumi 1:b387585de3b5 157 int16_t dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9;
Joeatsumi 1:b387585de3b5 158 uint16_t dig_H1, dig_H3;
Joeatsumi 1:b387585de3b5 159 int16_t dig_H2, dig_H4, dig_H5, dig_H6;
Joeatsumi 1:b387585de3b5 160 int32_t t_fine;
Joeatsumi 1:b387585de3b5 161
Joeatsumi 0:3df2d4d2d393 162
Joeatsumi 0:3df2d4d2d393 163 };