BME280にアクセスするためのライブラリ
Diff: BME280.h
- Revision:
- 3:df1107ddf502
- Parent:
- 2:42725d11023b
- Child:
- 4:4c4e3ec9a2c4
--- a/BME280.h Tue Jul 10 07:59:58 2018 +0000 +++ b/BME280.h Tue Jul 10 08:57:26 2018 +0000 @@ -6,74 +6,123 @@ #include "BME280_reg.h" //レジスタ関連の定義 +//BME280クラス class BME280{ public: /** - @brief Create a new i2c sensor. - @param sda SDA pin name (Defined in PinName.h) - @param sck SCK pin name (Defined in PinName.h) + @brief BME280クラスの作成 + @param[in] sda SDAピン名 (PinName.hに定義) + @param[in] sck SCKピン名 (PinName.hに定義) + @param[in] mode 測定動作モード(BME_reg.hに定義) + @param[in] press_sample 気圧のオーバーサンプリング(BME_reg.hに定義) + @param[in] temp_sample 温度のオーバーサンプリング(BME_reg.hに定義) + @param[in] hum_sample 湿度のオーバーサンプリング(BME_reg.hに定義) + @param[in] filter IIRフィルタの時定数設定(BME_reg.hに定義) + @param[in] stanby 測定後休止時間の設定(ノーマルモードのみ有効,BME_reg.hに定義) */ - BME280(PinName sda, PinName scl); + BME280(PinName sda, PinName scl, + char mode = BME280_FORCE_MODE, + char press_sample = BME280_PRESS_OVER_SAMPL1, + char temp_sample = BME280_TEMP_OVER_SAMPL1, + char hum_sample = BME280_HUM_OVER_SAMPL1, + char filter = BME280_IIR_OFF, + char stanby = 0); + /** - @brief Create a new i2c sensor. - @param &i2c_obj i2c name + @brief BME280クラスの作成. + @param &i2c_obj i2c名 + @param[in] mode 測定動作モード(BME_reg.hに定義) + @param[in] press_sample 気圧のオーバーサンプリング(BME_reg.hに定義) + @param[in] temp_sample 温度のオーバーサンプリング(BME_reg.hに定義) + @param[in] hum_sample 湿度のオーバーサンプリング(BME_reg.hに定義) + @param[in] filter IIRフィルタの時定数設定(BME_reg.hに定義) + @param[in] stanby 測定後休止間の設定(ノーマルモードのみ有効,BME_reg.hに定義) */ - BME280(GEN_I2C &i2c_obj); + BME280(GEN_I2C &i2c_obj, + char mode = BME280_FORCE_MODE, + char press_sample = BME280_PRESS_OVER_SAMPL1, + char temp_sample = BME280_TEMP_OVER_SAMPL1, + char hum_sample = BME280_HUM_OVER_SAMPL1, + char filter = BME280_IIR_OFF, + char stanby = 0); /** - @brief Disable the i2c sensor. - @param No parameters. + @brief BME280クラスのデストラクタ + @param パラメータなし. */ virtual ~BME280(); - const char hum_reg_value = BMP280_HUM_OVER_SAMPL1; - const char meas_reg_value = BMP280_TEMP_OVER_SAMPL1 | BMP280_PRESS_OVER_SAMPL1 | BMP280_SLEEP_MODE; - const char config_reg_value = BMP280_IIR_OFF; + /** + @brief 気圧(単位:Pa) + */ + double press; + /** + @brief 温度(単位:℃) + */ float temp; - double press; + /** + @brief 湿度(単位:%) + */ float hum; + + /** + @brief センサからデータを読み取って気圧、温度、湿度データ更新 + @param パラメータなし. + */ void read_sensor(void); - bool data_is_ready(void); - void set_sleep_mode(void); - void set_force_mode(void); - void set_normal_mode(void); private: + //i2c用 GEN_I2C *i2c_p; GEN_I2C &sensor; + //初期化関数 + void init(void); + + //設定保持用 + char _mode; + char _press_sample; + char _temp_sample; + char _hum_sample; + char _filter; + char _stanby; + + //強制測定モードをセットする関数。 + inline void set_force_mode(void); + +//データ補正用関数とそこで使う変数(データシートより) long signed int t_fine; long signed int BME280_compensate_T_int32(long signed int adc_T); long unsigned int BME280_compensate_P_int64(long signed int adc_P); long unsigned int BME280_compensate_H_int32(long signed int adc_H); - - void init(void); - - //データシートより,補正定数 + + //温度補正係数 unsigned short dig_T1; - signed short dig_T2; - signed short dig_T3; + signed short dig_T2; + signed short dig_T3; + //気圧補正係数 unsigned short dig_P1; - signed short dig_P2; - signed short dig_P3; - signed short dig_P4; - signed short dig_P5; - signed short dig_P6; - signed short dig_P7; - signed short dig_P8; - signed short dig_P9; + signed short dig_P2; + signed short dig_P3; + signed short dig_P4; + signed short dig_P5; + signed short dig_P6; + signed short dig_P7; + signed short dig_P8; + signed short dig_P9; + //湿度補正係数 unsigned char dig_H1; - signed short dig_H2; + signed short dig_H2; unsigned char dig_H3; - signed short dig_H4; - signed short dig_H5; - signed char dig_H6; + signed short dig_H4; + signed short dig_H5; + signed char dig_H6; };