BME280にアクセスするためのライブラリ
BME280.h@3:df1107ddf502, 2018-07-10 (annotated)
- 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?
User | Revision | Line number | New 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 |