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