106 int32_t var1, var2, adc_T;
114 var1 = ((((adc_T >> 3) - ((int32_t)_dig_T1 << 1))) * ((int32_t)_dig_T2)) >> 11;
116 var2 = (((((adc_T >> 4) - ((int32_t)_dig_T1)) *
117 ((adc_T >> 4) - ((int32_t)_dig_T1))) >> 12) *
118 ((int32_t)_dig_T3)) >> 14;
120 _t_fine = var1 + var2;
122 temperature = ((_t_fine * 5) + 128) >> 8;
124 return temperature / 100.0;
147 var1 = ((int64_t)_t_fine) - 128000;
148 var2 = var1 * var1 * (int64_t)_dig_P6;
149 var2 = var2 + ((var1 * (int64_t)_dig_P5) << 17);
150 var2 = var2 + (((int64_t)_dig_P4) << 35);
151 var1 = ((var1 * var1 * (int64_t)_dig_P3) >> 8) + ((var1 * (int64_t)_dig_P2) << 12);
152 var1 = (((((int64_t)1) << 47) + var1)) * ((int64_t)_dig_P1) >> 33;
158 p = (((p << 31) - var2) * 3125) / var1;
159 var1 = (((int64_t)_dig_P9) * (p >> 13) * (p >> 13)) >> 25;
160 var2 = (((int64_t)_dig_P8) * p) >> 19;
162 p = ((p + var1 + var2) >> 8) + (((int64_t)_dig_P7) << 4);
164 return (
float)p / 256;
179 return 44330.0 * (1.0 - pow(atmospheric / seaLevel, 0.1903));
204 v_x1_u32r = (_t_fine - ((int32_t)76800));
206 v_x1_u32r = ((((adc_H << 14) - (((int32_t)_dig_H4) << 20) - (((int32_t)_dig_H5) * v_x1_u32r)) +
207 ((int32_t)16384)) >> 15) *
209 ((int32_t)_dig_H6)) >> 10) *
211 ((int32_t)_dig_H3)) >> 11) + ((int32_t)32768))) >> 10) + ((int32_t)2097152)) *
212 ((int32_t)_dig_H2) + 8192) >> 14);
214 v_x1_u32r = (v_x1_u32r - (((((v_x1_u32r >> 15) * (v_x1_u32r >> 15)) >> 7) *
215 ((int32_t)_dig_H1)) >> 4));
217 v_x1_u32r = (v_x1_u32r < 0) ? 0 : v_x1_u32r;
218 v_x1_u32r = (v_x1_u32r > 419430400) ? 419430400 : v_x1_u32r;
220 humidity = (v_x1_u32r >> 12);
222 return humidity / 1024.0;
228 void ErriezBMX280::readCoefficients(
void)
298 Wire.beginTransmission(_i2cAddr);
300 if (Wire.endTransmission() != 0) {
303 Wire.requestFrom(_i2cAddr, (byte)1);
316 Wire.beginTransmission(_i2cAddr);
319 Wire.endTransmission();
335 return (value >> 8) | (value << 8);
359 Wire.beginTransmission(_i2cAddr);
361 if (Wire.endTransmission() != 0) {
364 Wire.requestFrom(_i2cAddr, (byte)2);
365 return (Wire.read() << 8) | Wire.read();
379 Wire.beginTransmission(_i2cAddr);
381 Wire.endTransmission();
382 Wire.requestFrom(_i2cAddr, (byte)3);
386 value |= Wire.read();
388 value |= Wire.read();
#define BME280_REG_DIG_H3
Humidity coefficient register.
ErriezBMX280(uint8_t i2cAddr)
Constructor.
#define BMX280_REG_DIG_P3
Pressure coefficient register.
#define BMX280_REG_DIG_T1
Temperature coefficient register.
uint8_t getChipID()
Get chip ID.
#define BME280_REG_HUM
Humidity data register.
#define BMX280_REG_DIG_P6
Pressure coefficient register.
#define BMX280_REG_DIG_P9
Pressure coefficient register.
#define BME280_REG_DIG_H1
Humidity coefficient register.
#define BME280_REG_CHIPID
Chip ID register.
#define BME280_REG_DIG_H2
Humidity coefficient register.
uint8_t read8(uint8_t reg)
Read from 8-bit register.
BMX280_Standby_e
Standby duration bits config register.
#define BMX280_REG_DIG_P5
Pressure coefficient register.
int16_t readS16_LE(uint8_t reg)
Read from 16-bit signed register little endian.
void write8(uint8_t reg, uint8_t value)
Write to 8-bit register.
BMX280_Sampling_e
Sampling bits registers ctrl_hum, ctrl_meas.
#define CHIP_ID_BME280
BME280 chip ID.
#define BMX280_REG_DIG_T2
Temperature coefficient register.
#define BMX280_REG_PRESS
Pressure data register.
#define RESET_KEY
Reset value for reset register.
#define BMX280_REG_CONFIG
Config register.
uint16_t read16_LE(uint8_t reg)
Read from 16-bit unsigned register little endian.
#define BME280_REG_RESET
Reset register.
#define BMX280_REG_TEMP
Temperature data register.
BMX280_Filter_e
Filter bits config register.
#define BMX280_REG_DIG_P8
Pressure coefficient register.
#define BMX280_REG_DIG_T3
Temperature coefficient register.
float readPressure()
Read pressure.
float readTemperature()
Read temperature.
#define BME280_REG_DIG_H5
Humidity coefficient register.
#define CHIP_ID_BMP280
BMP280 chip ID.
#define BMX280_REG_DIG_P7
Pressure coefficient register.
uint16_t read16(uint8_t reg)
Read from 16-bit register.
#define BMX280_REG_DIG_P4
Pressure coefficient register.
#define BME280_REG_CTRL_HUM
BME280: Control humidity register.
uint32_t read24(uint8_t reg)
Read from 24-bit register.
BMP280/BME280 sensor library for Arduino.
float readHumidity()
Read humidity (BME280 only)
#define BME280_REG_DIG_H4
Humidity coefficient register.
#define BME280_REG_DIG_H6
Humidity coefficient register.
float readAltitude(float seaLevel)
Read approximate altitude.
bool begin()
Sensor initialization.
#define BMX280_REG_CTRL_MEAS
Control measure register.
void setSampling(BMX280_Mode_e mode=BMX280_MODE_NORMAL, BMX280_Sampling_e tempSampling=BMX280_SAMPLING_X16, BMX280_Sampling_e pressSampling=BMX280_SAMPLING_X16, BMX280_Sampling_e humSampling=BMX280_SAMPLING_X16, BMX280_Filter_e filter=BMX280_FILTER_OFF, BMX280_Standby_e standbyDuration=BMX280_STANDBY_MS_0_5)
Set sampling registers.
#define BMX280_REG_STATUS
Status register.
#define BMX280_REG_DIG_P2
Pressure coefficient register.
#define STATUS_IM_UPDATE
im_update bit in status register
#define BMX280_REG_DIG_P1
Pressure coefficient register.
BMX280_Mode_e
Sleep mode bits ctrl_meas register.