Skip to content

Commit ba0bcdb

Browse files
committed
Made the Wire Bus selectable in setup
1 parent 784dc84 commit ba0bcdb

File tree

4 files changed

+49
-26
lines changed

4 files changed

+49
-26
lines changed

Adafruit_BME280.cpp

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,33 @@ Adafruit_BME280::Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, i
4040
@brief Initialise sensor with given parameters / settings
4141
*/
4242
/**************************************************************************/
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)
4458
{
4559
_i2caddr = addr;
60+
_wire = theWire;
61+
return init();
62+
}
4663

64+
bool Adafruit_BME280::init()
65+
{
4766
// init I2C or SPI sensor interface
4867
if (_cs == -1) {
4968
// I2C
50-
Wire.begin();
69+
_wire -> begin();
5170
} else {
5271
digitalWrite(_cs, HIGH);
5372
pinMode(_cs, OUTPUT);
@@ -149,10 +168,10 @@ uint8_t Adafruit_BME280::spixfer(uint8_t x) {
149168
/**************************************************************************/
150169
void Adafruit_BME280::write8(byte reg, byte value) {
151170
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();
156175
} else {
157176
if (_sck == -1)
158177
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));
@@ -175,11 +194,11 @@ uint8_t Adafruit_BME280::read8(byte reg) {
175194
uint8_t value;
176195

177196
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();
183202
} else {
184203
if (_sck == -1)
185204
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));
@@ -204,11 +223,11 @@ uint16_t Adafruit_BME280::read16(byte reg)
204223
uint16_t value;
205224

206225
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();
212231
} else {
213232
if (_sck == -1)
214233
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));
@@ -267,16 +286,16 @@ uint32_t Adafruit_BME280::read24(byte reg)
267286
uint32_t value;
268287

269288
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);
274293

275-
value = Wire.read();
294+
value = _wire -> read();
276295
value <<= 8;
277-
value |= Wire.read();
296+
value |= _wire -> read();
278297
value <<= 8;
279-
value |= Wire.read();
298+
value |= _wire -> read();
280299
} else {
281300
if (_sck == -1)
282301
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));

Adafruit_BME280.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,10 @@ class Adafruit_BME280 {
166166
Adafruit_BME280(int8_t cspin);
167167
Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin);
168168

169-
bool begin(uint8_t addr = BME280_ADDRESS);
169+
bool begin(TwoWire *theWire);
170+
bool begin(uint8_t addr = BME280_ADDRESS);
171+
bool begin(uint8_t addr = BME280_ADDRESS, TwoWire *theWire = &Wire);
172+
bool init();
170173

171174
void setSampling(sensor_mode mode = MODE_NORMAL,
172175
sensor_sampling tempSampling = SAMPLING_X16,
@@ -186,6 +189,7 @@ class Adafruit_BME280 {
186189

187190

188191
private:
192+
TwoWire *_wire;
189193
void readCoefficients(void);
190194
bool isReadingCalibration(void);
191195
uint8_t spixfer(uint8_t x);

examples/advancedsettings/advancedsettings.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void setup() {
3737
Serial.begin(9600);
3838
Serial.println(F("BME280 test"));
3939

40-
if (! bme.begin()) {
40+
if (! bme.begin(&Wire1)) {
4141
Serial.println("Could not find a valid BME280 sensor, check wiring!");
4242
while (1);
4343
}

examples/bme280test/bme280test.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void setup() {
4040
bool status;
4141

4242
// default settings
43-
status = bme.begin();
43+
status = bme.begin(&Wire1);
4444
if (!status) {
4545
Serial.println("Could not find a valid BME280 sensor, check wiring!");
4646
while (1);

0 commit comments

Comments
 (0)