@@ -46,8 +46,6 @@ BME280::BME280( void )
46
46
47
47
// Select CS pin for SPI. Does nothing for I2C
48
48
settings.chipSelectPin = 10 ;
49
-
50
- settings.runMode = 0 ;
51
49
}
52
50
53
51
@@ -128,13 +126,11 @@ uint8_t BME280::begin()
128
126
calibration.dig_H5 = ((int16_t )((readRegister (BME280_DIG_H5_MSB_REG) << 4 ) + ((readRegister (BME280_DIG_H4_LSB_REG) >> 4 ) & 0x0F )));
129
127
calibration.dig_H6 = ((int8_t )readRegister (BME280_DIG_H6_REG));
130
128
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
138
134
139
135
setMode (MODE_NORMAL); // Go!
140
136
@@ -155,7 +151,7 @@ bool BME280::beginI2C(TwoWire &wirePort)
155
151
}
156
152
157
153
// Set the mode bits in the ctrl_meas register
158
- // Mode 00 = Sleep
154
+ // Mode 00 = Sleep
159
155
// 01 and 10 = Forced
160
156
// 11 = Normal mode
161
157
void BME280::setMode (uint8_t mode)
@@ -168,6 +164,43 @@ void BME280::setMode(uint8_t mode)
168
164
writeRegister (BME280_CTRL_MEAS_REG, controlData);
169
165
}
170
166
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
+
171
204
// Gets the current mode bits in the ctrl_meas register
172
205
// Mode 00 = Sleep
173
206
// 01 and 10 = Forced
0 commit comments