@@ -46,8 +46,6 @@ BME280::BME280( void )
4646
4747	// Select CS pin for SPI.  Does nothing for I2C
4848	settings.chipSelectPin  = 10 ;
49- 
50- 	settings.runMode  = 0 ;
5149}
5250
5351
@@ -128,13 +126,11 @@ uint8_t BME280::begin()
128126	calibration.dig_H5  = ((int16_t )((readRegister (BME280_DIG_H5_MSB_REG) << 4 ) + ((readRegister (BME280_DIG_H4_LSB_REG) >> 4 ) & 0x0F )));
129127	calibration.dig_H6  = ((int8_t )readRegister (BME280_DIG_H6_REG));
130128
131- 	settings.runMode  = 3 ; //   3, Normal mode
132- 	settings.tStandby  = 0 ; //   0, 0.5ms
133- 	settings.filter  = 0 ; //   0, filter off
134- 
135- 	setPressureOverSample (1 ); // Default
136- 	setHumidityOverSample (1 ); // Default
137- 	setTempOverSample (1 ); // Default
129+ 	setStandbyTime (0 ); // Default to 0.5ms
130+ 	setFilter (0 ); // Default filter off
131+ 	setPressureOverSample (1 ); // Default of 1x oversample
132+ 	setHumidityOverSample (1 ); // Default of 1x oversample
133+ 	setTempOverSample (1 ); // Default of 1x oversample
138134
139135	setMode (MODE_NORMAL); // Go!
140136
@@ -155,7 +151,7 @@ bool BME280::beginI2C(TwoWire &wirePort)
155151}
156152
157153// Set the mode bits in the ctrl_meas register
158- // Mode 00 = Sleep
154+ //   Mode 00 = Sleep
159155//  01 and 10 = Forced
160156//  11 = Normal mode
161157void  BME280::setMode (uint8_t  mode)
@@ -168,6 +164,43 @@ void BME280::setMode(uint8_t mode)
168164	writeRegister (BME280_CTRL_MEAS_REG, controlData);
169165}
170166
167+ // Set the standby bits in the config register
168+ // tStandby can be:
169+ //   0, 0.5ms
170+ //   1, 62.5ms
171+ //   2, 125ms
172+ //   3, 250ms
173+ //   4, 500ms
174+ //   5, 1000ms
175+ //   6, 10ms
176+ //   7, 20ms
177+ void  BME280::setStandbyTime (uint8_t  timeSetting)
178+ {
179+ 	if (timeSetting > 0b111 ) timeSetting = 0 ; // Error check. Default to 0.5ms
180+ 	
181+ 	uint8_t  controlData = readRegister (BME280_CONFIG_REG);
182+ 	controlData &= ~( (1 <<7 ) | (1 <<6 ) | (1 <<5 ) ); // Clear the 7/6/5 bits
183+ 	controlData |= (timeSetting << 5 ); // Align with bits 7/6/5
184+ 	writeRegister (BME280_CONFIG_REG, controlData);
185+ }
186+ 
187+ // Set the filter bits in the config register
188+ // filter can be:
189+ //   0, filter off
190+ //   1, 2
191+ //   2, 4
192+ //   3, 8
193+ //   5+, 16
194+ void  BME280::setFilter (uint8_t  filterSetting)
195+ {
196+ 	if (filterSetting > 0b111 ) filterSetting = 0 ; // Error check. Default to filter off
197+ 	
198+ 	uint8_t  controlData = readRegister (BME280_CONFIG_REG);
199+ 	controlData &= ~( (1 <<4 ) | (1 <<3 ) | (1 <<2 ) ); // Clear the 4/3/2 bits
200+ 	controlData |= (filterSetting << 2 ); // Align with bits 4/3/2
201+ 	writeRegister (BME280_CONFIG_REG, controlData);
202+ }
203+ 
171204// Gets the current mode bits in the ctrl_meas register
172205// Mode 00 = Sleep
173206//  01 and 10 = Forced
0 commit comments