気圧・温度・湿度センサBME280を使うためのライブラリ

Dependents:   SWAN_IZU2019_v1

Committer:
Sigma884
Date:
Thu Jan 24 17:47:44 2019 +0000
Revision:
0:9f2a22c6ced2
Child:
1:0a0ad1327b0f
first edition

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sigma884 0:9f2a22c6ced2 1 #ifndef BME280_LIB_H
Sigma884 0:9f2a22c6ced2 2 #define BME280_LIB_H
Sigma884 0:9f2a22c6ced2 3
Sigma884 0:9f2a22c6ced2 4 #define BME_ADDR_LOW 0x76
Sigma884 0:9f2a22c6ced2 5 #define BME_ADDR_HIGH 0x77
Sigma884 0:9f2a22c6ced2 6
Sigma884 0:9f2a22c6ced2 7 #define BME_ID 0xD0
Sigma884 0:9f2a22c6ced2 8
Sigma884 0:9f2a22c6ced2 9 #define BME_CTRL_HUM 0xF2
Sigma884 0:9f2a22c6ced2 10 #define BME_CTRL_MEAS 0xF4
Sigma884 0:9f2a22c6ced2 11 #define BME_CONFIG 0xF5
Sigma884 0:9f2a22c6ced2 12
Sigma884 0:9f2a22c6ced2 13 #define BME_PRESS 0xF7
Sigma884 0:9f2a22c6ced2 14 #define BME_TEMP 0xFA
Sigma884 0:9f2a22c6ced2 15 #define BME_HUM 0xFD
Sigma884 0:9f2a22c6ced2 16
Sigma884 0:9f2a22c6ced2 17 #define BME_COMP1 0x88
Sigma884 0:9f2a22c6ced2 18 #define BME_COMP2 0xE1
Sigma884 0:9f2a22c6ced2 19
Sigma884 0:9f2a22c6ced2 20 class BME280_lib{
Sigma884 0:9f2a22c6ced2 21 public:
Sigma884 0:9f2a22c6ced2 22
Sigma884 0:9f2a22c6ced2 23 typedef enum{
Sigma884 0:9f2a22c6ced2 24 AD0_LOW = BME_ADDR_LOW,
Sigma884 0:9f2a22c6ced2 25 AD0_HIGH = BME_ADDR_HIGH
Sigma884 0:9f2a22c6ced2 26 }AD0;
Sigma884 0:9f2a22c6ced2 27
Sigma884 0:9f2a22c6ced2 28 typedef enum{
Sigma884 0:9f2a22c6ced2 29 SLEEP = 0x00,
Sigma884 0:9f2a22c6ced2 30 FORCED = 0x01,
Sigma884 0:9f2a22c6ced2 31 NORMAL = 0x03
Sigma884 0:9f2a22c6ced2 32 }MODE;
Sigma884 0:9f2a22c6ced2 33
Sigma884 0:9f2a22c6ced2 34 BME280_lib(I2C &user_i2c, AD0 ad0);
Sigma884 0:9f2a22c6ced2 35
Sigma884 0:9f2a22c6ced2 36 int connectCheck();
Sigma884 0:9f2a22c6ced2 37
Sigma884 0:9f2a22c6ced2 38 void configMeasure(MODE mode, int temp_over_sampling, int pres_over_sampling, int hum_over_sampling);
Sigma884 0:9f2a22c6ced2 39 void configFilter(int filter);
Sigma884 0:9f2a22c6ced2 40
Sigma884 0:9f2a22c6ced2 41 void getData(float *temp, float *pres, float *hum);
Sigma884 0:9f2a22c6ced2 42 float getTemp();
Sigma884 0:9f2a22c6ced2 43 float getPres();
Sigma884 0:9f2a22c6ced2 44 float getHum();
Sigma884 0:9f2a22c6ced2 45
Sigma884 0:9f2a22c6ced2 46 float getAlt(float pres_0, float temp_0);
Sigma884 0:9f2a22c6ced2 47 float getAlt2(float pres_0, float temp_0);
Sigma884 0:9f2a22c6ced2 48
Sigma884 0:9f2a22c6ced2 49
Sigma884 0:9f2a22c6ced2 50 private:
Sigma884 0:9f2a22c6ced2 51 char slave;
Sigma884 0:9f2a22c6ced2 52 I2C *i2c;
Sigma884 0:9f2a22c6ced2 53
Sigma884 0:9f2a22c6ced2 54 void readCOMP();
Sigma884 0:9f2a22c6ced2 55 int calcT();
Sigma884 0:9f2a22c6ced2 56 unsigned int calcP();
Sigma884 0:9f2a22c6ced2 57 unsigned int calcH();
Sigma884 0:9f2a22c6ced2 58
Sigma884 0:9f2a22c6ced2 59 char cmd[2];
Sigma884 0:9f2a22c6ced2 60 char buff[26];
Sigma884 0:9f2a22c6ced2 61 int adc;
Sigma884 0:9f2a22c6ced2 62
Sigma884 0:9f2a22c6ced2 63 float pres, temp, hum;
Sigma884 0:9f2a22c6ced2 64
Sigma884 0:9f2a22c6ced2 65 unsigned short dig_T1;
Sigma884 0:9f2a22c6ced2 66 short dig_T2, dig_T3;
Sigma884 0:9f2a22c6ced2 67 unsigned short dig_P1;
Sigma884 0:9f2a22c6ced2 68 short dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9;
Sigma884 0:9f2a22c6ced2 69 unsigned char dig_H1;
Sigma884 0:9f2a22c6ced2 70 short dig_H2;
Sigma884 0:9f2a22c6ced2 71 unsigned char dig_H3;
Sigma884 0:9f2a22c6ced2 72 short dig_H4, dig_H5;
Sigma884 0:9f2a22c6ced2 73 char dig_H6;
Sigma884 0:9f2a22c6ced2 74 int t_fine;
Sigma884 0:9f2a22c6ced2 75
Sigma884 0:9f2a22c6ced2 76 int T_var1, T_var2, T, v_x1;
Sigma884 0:9f2a22c6ced2 77 long long P_var1, P_var2, P;
Sigma884 0:9f2a22c6ced2 78 };
Sigma884 0:9f2a22c6ced2 79
Sigma884 0:9f2a22c6ced2 80 #endif