@@ -40,14 +40,33 @@ Adafruit_BME280::Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, i
40
40
@brief Initialise sensor with given parameters / settings
41
41
*/
42
42
/* *************************************************************************/
43
- bool Adafruit_BME280::begin (uint8_t addr)
43
+ bool Adafruit_BME280::begin (TwoWire *theWire)
44
+ {
45
+ _wire = theWire;
46
+ _i2caddr = BME280_ADDRESS;
47
+ return init ();
48
+ }
49
+
50
+ bool Adafruit_BME280::begin (uint8_t addr)
51
+ {
52
+ _i2caddr = addr;
53
+ _wire = &Wire;
54
+ return init ();
55
+ }
56
+
57
+ bool Adafruit_BME280::begin (uint8_t addr, TwoWire *theWire)
44
58
{
45
59
_i2caddr = addr;
60
+ _wire = theWire;
61
+ return init ();
62
+ }
46
63
64
+ bool Adafruit_BME280::init ()
65
+ {
47
66
// init I2C or SPI sensor interface
48
67
if (_cs == -1 ) {
49
68
// I2C
50
- Wire. begin ();
69
+ _wire -> begin ();
51
70
} else {
52
71
digitalWrite (_cs, HIGH);
53
72
pinMode (_cs, OUTPUT);
@@ -149,10 +168,10 @@ uint8_t Adafruit_BME280::spixfer(uint8_t x) {
149
168
/* *************************************************************************/
150
169
void Adafruit_BME280::write8 (byte reg, byte value) {
151
170
if (_cs == -1 ) {
152
- Wire. beginTransmission ((uint8_t )_i2caddr);
153
- Wire. write ((uint8_t )reg);
154
- Wire. write ((uint8_t )value);
155
- Wire. endTransmission ();
171
+ _wire -> beginTransmission ((uint8_t )_i2caddr);
172
+ _wire -> write ((uint8_t )reg);
173
+ _wire -> write ((uint8_t )value);
174
+ _wire -> endTransmission ();
156
175
} else {
157
176
if (_sck == -1 )
158
177
SPI.beginTransaction (SPISettings (500000 , MSBFIRST, SPI_MODE0));
@@ -175,11 +194,11 @@ uint8_t Adafruit_BME280::read8(byte reg) {
175
194
uint8_t value;
176
195
177
196
if (_cs == -1 ) {
178
- Wire. beginTransmission ((uint8_t )_i2caddr);
179
- Wire. write ((uint8_t )reg);
180
- Wire. endTransmission ();
181
- Wire. requestFrom ((uint8_t )_i2caddr, (byte)1 );
182
- value = Wire. read ();
197
+ _wire -> beginTransmission ((uint8_t )_i2caddr);
198
+ _wire -> write ((uint8_t )reg);
199
+ _wire -> endTransmission ();
200
+ _wire -> requestFrom ((uint8_t )_i2caddr, (byte)1 );
201
+ value = _wire -> read ();
183
202
} else {
184
203
if (_sck == -1 )
185
204
SPI.beginTransaction (SPISettings (500000 , MSBFIRST, SPI_MODE0));
@@ -204,11 +223,11 @@ uint16_t Adafruit_BME280::read16(byte reg)
204
223
uint16_t value;
205
224
206
225
if (_cs == -1 ) {
207
- Wire. beginTransmission ((uint8_t )_i2caddr);
208
- Wire. write ((uint8_t )reg);
209
- Wire. endTransmission ();
210
- Wire. requestFrom ((uint8_t )_i2caddr, (byte)2 );
211
- value = (Wire. read () << 8 ) | Wire. read ();
226
+ _wire -> beginTransmission ((uint8_t )_i2caddr);
227
+ _wire -> write ((uint8_t )reg);
228
+ _wire -> endTransmission ();
229
+ _wire -> requestFrom ((uint8_t )_i2caddr, (byte)2 );
230
+ value = (_wire -> read () << 8 ) | _wire -> read ();
212
231
} else {
213
232
if (_sck == -1 )
214
233
SPI.beginTransaction (SPISettings (500000 , MSBFIRST, SPI_MODE0));
@@ -267,16 +286,16 @@ uint32_t Adafruit_BME280::read24(byte reg)
267
286
uint32_t value;
268
287
269
288
if (_cs == -1 ) {
270
- Wire. beginTransmission ((uint8_t )_i2caddr);
271
- Wire. write ((uint8_t )reg);
272
- Wire. endTransmission ();
273
- Wire. requestFrom ((uint8_t )_i2caddr, (byte)3 );
289
+ _wire -> beginTransmission ((uint8_t )_i2caddr);
290
+ _wire -> write ((uint8_t )reg);
291
+ _wire -> endTransmission ();
292
+ _wire -> requestFrom ((uint8_t )_i2caddr, (byte)3 );
274
293
275
- value = Wire. read ();
294
+ value = _wire -> read ();
276
295
value <<= 8 ;
277
- value |= Wire. read ();
296
+ value |= _wire -> read ();
278
297
value <<= 8 ;
279
- value |= Wire. read ();
298
+ value |= _wire -> read ();
280
299
} else {
281
300
if (_sck == -1 )
282
301
SPI.beginTransaction (SPISettings (500000 , MSBFIRST, SPI_MODE0));
0 commit comments