BME280にアクセスするためのライブラリ

Committer:
j_rocket_boy
Date:
Tue Jul 10 08:57:26 2018 +0000
Revision:
3:df1107ddf502
Parent:
2:42725d11023b
Child:
4:4c4e3ec9a2c4
???????; ???????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j_rocket_boy 0:95f2b96cdc7f 1 #ifndef BME280_LIB_H
j_rocket_boy 0:95f2b96cdc7f 2 #define BME280_LIB
j_rocket_boy 0:95f2b96cdc7f 3
j_rocket_boy 0:95f2b96cdc7f 4 #include "mbed.h"
j_rocket_boy 0:95f2b96cdc7f 5 #include "i2c_general_io.h"
j_rocket_boy 0:95f2b96cdc7f 6
j_rocket_boy 2:42725d11023b 7 #include "BME280_reg.h" //レジスタ関連の定義
j_rocket_boy 2:42725d11023b 8
j_rocket_boy 3:df1107ddf502 9 //BME280クラス
j_rocket_boy 0:95f2b96cdc7f 10 class BME280{
j_rocket_boy 0:95f2b96cdc7f 11
j_rocket_boy 0:95f2b96cdc7f 12 public:
j_rocket_boy 0:95f2b96cdc7f 13 /**
j_rocket_boy 3:df1107ddf502 14 @brief BME280クラスの作成
j_rocket_boy 3:df1107ddf502 15 @param[in] sda SDAピン名 (PinName.hに定義)
j_rocket_boy 3:df1107ddf502 16 @param[in] sck SCKピン名 (PinName.hに定義)
j_rocket_boy 3:df1107ddf502 17 @param[in] mode 測定動作モード(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 18 @param[in] press_sample 気圧のオーバーサンプリング(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 19 @param[in] temp_sample 温度のオーバーサンプリング(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 20 @param[in] hum_sample 湿度のオーバーサンプリング(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 21 @param[in] filter IIRフィルタの時定数設定(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 22 @param[in] stanby 測定後休止時間の設定(ノーマルモードのみ有効,BME_reg.hに定義)
j_rocket_boy 0:95f2b96cdc7f 23 */
j_rocket_boy 3:df1107ddf502 24 BME280(PinName sda, PinName scl,
j_rocket_boy 3:df1107ddf502 25 char mode = BME280_FORCE_MODE,
j_rocket_boy 3:df1107ddf502 26 char press_sample = BME280_PRESS_OVER_SAMPL1,
j_rocket_boy 3:df1107ddf502 27 char temp_sample = BME280_TEMP_OVER_SAMPL1,
j_rocket_boy 3:df1107ddf502 28 char hum_sample = BME280_HUM_OVER_SAMPL1,
j_rocket_boy 3:df1107ddf502 29 char filter = BME280_IIR_OFF,
j_rocket_boy 3:df1107ddf502 30 char stanby = 0);
j_rocket_boy 3:df1107ddf502 31
j_rocket_boy 0:95f2b96cdc7f 32 /**
j_rocket_boy 3:df1107ddf502 33 @brief BME280クラスの作成.
j_rocket_boy 3:df1107ddf502 34 @param &i2c_obj i2c名
j_rocket_boy 3:df1107ddf502 35 @param[in] mode 測定動作モード(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 36 @param[in] press_sample 気圧のオーバーサンプリング(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 37 @param[in] temp_sample 温度のオーバーサンプリング(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 38 @param[in] hum_sample 湿度のオーバーサンプリング(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 39 @param[in] filter IIRフィルタの時定数設定(BME_reg.hに定義)
j_rocket_boy 3:df1107ddf502 40 @param[in] stanby 測定後休止間の設定(ノーマルモードのみ有効,BME_reg.hに定義)
j_rocket_boy 0:95f2b96cdc7f 41 */
j_rocket_boy 3:df1107ddf502 42 BME280(GEN_I2C &i2c_obj,
j_rocket_boy 3:df1107ddf502 43 char mode = BME280_FORCE_MODE,
j_rocket_boy 3:df1107ddf502 44 char press_sample = BME280_PRESS_OVER_SAMPL1,
j_rocket_boy 3:df1107ddf502 45 char temp_sample = BME280_TEMP_OVER_SAMPL1,
j_rocket_boy 3:df1107ddf502 46 char hum_sample = BME280_HUM_OVER_SAMPL1,
j_rocket_boy 3:df1107ddf502 47 char filter = BME280_IIR_OFF,
j_rocket_boy 3:df1107ddf502 48 char stanby = 0);
j_rocket_boy 0:95f2b96cdc7f 49
j_rocket_boy 0:95f2b96cdc7f 50 /**
j_rocket_boy 3:df1107ddf502 51 @brief BME280クラスのデストラクタ
j_rocket_boy 3:df1107ddf502 52 @param パラメータなし.
j_rocket_boy 0:95f2b96cdc7f 53 */
j_rocket_boy 0:95f2b96cdc7f 54 virtual ~BME280();
j_rocket_boy 0:95f2b96cdc7f 55
j_rocket_boy 0:95f2b96cdc7f 56
j_rocket_boy 3:df1107ddf502 57 /**
j_rocket_boy 3:df1107ddf502 58 @brief 気圧(単位:Pa)
j_rocket_boy 3:df1107ddf502 59 */
j_rocket_boy 3:df1107ddf502 60 double press;
j_rocket_boy 3:df1107ddf502 61 /**
j_rocket_boy 3:df1107ddf502 62 @brief 温度(単位:℃)
j_rocket_boy 3:df1107ddf502 63 */
j_rocket_boy 0:95f2b96cdc7f 64 float temp;
j_rocket_boy 3:df1107ddf502 65 /**
j_rocket_boy 3:df1107ddf502 66 @brief 湿度(単位:%)
j_rocket_boy 3:df1107ddf502 67 */
j_rocket_boy 0:95f2b96cdc7f 68 float hum;
j_rocket_boy 3:df1107ddf502 69
j_rocket_boy 0:95f2b96cdc7f 70
j_rocket_boy 3:df1107ddf502 71 /**
j_rocket_boy 3:df1107ddf502 72 @brief センサからデータを読み取って気圧、温度、湿度データ更新
j_rocket_boy 3:df1107ddf502 73 @param パラメータなし.
j_rocket_boy 3:df1107ddf502 74 */
j_rocket_boy 0:95f2b96cdc7f 75 void read_sensor(void);
j_rocket_boy 0:95f2b96cdc7f 76
j_rocket_boy 0:95f2b96cdc7f 77 private:
j_rocket_boy 0:95f2b96cdc7f 78
j_rocket_boy 3:df1107ddf502 79 //i2c用
j_rocket_boy 0:95f2b96cdc7f 80 GEN_I2C *i2c_p;
j_rocket_boy 0:95f2b96cdc7f 81 GEN_I2C &sensor;
j_rocket_boy 0:95f2b96cdc7f 82
j_rocket_boy 3:df1107ddf502 83 //初期化関数
j_rocket_boy 3:df1107ddf502 84 void init(void);
j_rocket_boy 3:df1107ddf502 85
j_rocket_boy 3:df1107ddf502 86 //設定保持用
j_rocket_boy 3:df1107ddf502 87 char _mode;
j_rocket_boy 3:df1107ddf502 88 char _press_sample;
j_rocket_boy 3:df1107ddf502 89 char _temp_sample;
j_rocket_boy 3:df1107ddf502 90 char _hum_sample;
j_rocket_boy 3:df1107ddf502 91 char _filter;
j_rocket_boy 3:df1107ddf502 92 char _stanby;
j_rocket_boy 3:df1107ddf502 93
j_rocket_boy 3:df1107ddf502 94 //強制測定モードをセットする関数。
j_rocket_boy 3:df1107ddf502 95 inline void set_force_mode(void);
j_rocket_boy 3:df1107ddf502 96
j_rocket_boy 3:df1107ddf502 97 //データ補正用関数とそこで使う変数(データシートより)
j_rocket_boy 1:0dbf59c6e564 98 long signed int t_fine;
j_rocket_boy 1:0dbf59c6e564 99 long signed int BME280_compensate_T_int32(long signed int adc_T);
j_rocket_boy 1:0dbf59c6e564 100 long unsigned int BME280_compensate_P_int64(long signed int adc_P);
j_rocket_boy 1:0dbf59c6e564 101 long unsigned int BME280_compensate_H_int32(long signed int adc_H);
j_rocket_boy 3:df1107ddf502 102
j_rocket_boy 3:df1107ddf502 103 //温度補正係数
j_rocket_boy 0:95f2b96cdc7f 104 unsigned short dig_T1;
j_rocket_boy 3:df1107ddf502 105 signed short dig_T2;
j_rocket_boy 3:df1107ddf502 106 signed short dig_T3;
j_rocket_boy 0:95f2b96cdc7f 107
j_rocket_boy 3:df1107ddf502 108 //気圧補正係数
j_rocket_boy 0:95f2b96cdc7f 109 unsigned short dig_P1;
j_rocket_boy 3:df1107ddf502 110 signed short dig_P2;
j_rocket_boy 3:df1107ddf502 111 signed short dig_P3;
j_rocket_boy 3:df1107ddf502 112 signed short dig_P4;
j_rocket_boy 3:df1107ddf502 113 signed short dig_P5;
j_rocket_boy 3:df1107ddf502 114 signed short dig_P6;
j_rocket_boy 3:df1107ddf502 115 signed short dig_P7;
j_rocket_boy 3:df1107ddf502 116 signed short dig_P8;
j_rocket_boy 3:df1107ddf502 117 signed short dig_P9;
j_rocket_boy 0:95f2b96cdc7f 118
j_rocket_boy 3:df1107ddf502 119 //湿度補正係数
j_rocket_boy 0:95f2b96cdc7f 120 unsigned char dig_H1;
j_rocket_boy 3:df1107ddf502 121 signed short dig_H2;
j_rocket_boy 0:95f2b96cdc7f 122 unsigned char dig_H3;
j_rocket_boy 3:df1107ddf502 123 signed short dig_H4;
j_rocket_boy 3:df1107ddf502 124 signed short dig_H5;
j_rocket_boy 3:df1107ddf502 125 signed char dig_H6;
j_rocket_boy 0:95f2b96cdc7f 126
j_rocket_boy 0:95f2b96cdc7f 127 };
j_rocket_boy 0:95f2b96cdc7f 128
j_rocket_boy 0:95f2b96cdc7f 129 #endif