Skip to content

Commit b2fd691

Browse files
committed
Merge branch 'mjs513-master'
2 parents 784dc84 + 7925877 commit b2fd691

File tree

4 files changed

+59
-27
lines changed

4 files changed

+59
-27
lines changed

Adafruit_BME280.cpp

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,40 @@ 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::begin(void)
65+
{
66+
_i2caddr = BME280_ADDRESS;
67+
_wire = &Wire;
68+
return init();
69+
}
70+
71+
bool Adafruit_BME280::init()
72+
{
4773
// init I2C or SPI sensor interface
4874
if (_cs == -1) {
4975
// I2C
50-
Wire.begin();
76+
_wire -> begin();
5177
} else {
5278
digitalWrite(_cs, HIGH);
5379
pinMode(_cs, OUTPUT);
@@ -149,10 +175,10 @@ uint8_t Adafruit_BME280::spixfer(uint8_t x) {
149175
/**************************************************************************/
150176
void Adafruit_BME280::write8(byte reg, byte value) {
151177
if (_cs == -1) {
152-
Wire.beginTransmission((uint8_t)_i2caddr);
153-
Wire.write((uint8_t)reg);
154-
Wire.write((uint8_t)value);
155-
Wire.endTransmission();
178+
_wire -> beginTransmission((uint8_t)_i2caddr);
179+
_wire -> write((uint8_t)reg);
180+
_wire -> write((uint8_t)value);
181+
_wire -> endTransmission();
156182
} else {
157183
if (_sck == -1)
158184
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));
@@ -175,11 +201,11 @@ uint8_t Adafruit_BME280::read8(byte reg) {
175201
uint8_t value;
176202

177203
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();
204+
_wire -> beginTransmission((uint8_t)_i2caddr);
205+
_wire -> write((uint8_t)reg);
206+
_wire -> endTransmission();
207+
_wire -> requestFrom((uint8_t)_i2caddr, (byte)1);
208+
value = _wire -> read();
183209
} else {
184210
if (_sck == -1)
185211
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));
@@ -204,11 +230,11 @@ uint16_t Adafruit_BME280::read16(byte reg)
204230
uint16_t value;
205231

206232
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();
233+
_wire -> beginTransmission((uint8_t)_i2caddr);
234+
_wire -> write((uint8_t)reg);
235+
_wire -> endTransmission();
236+
_wire -> requestFrom((uint8_t)_i2caddr, (byte)2);
237+
value = (_wire -> read() << 8) | _wire -> read();
212238
} else {
213239
if (_sck == -1)
214240
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));
@@ -267,16 +293,16 @@ uint32_t Adafruit_BME280::read24(byte reg)
267293
uint32_t value;
268294

269295
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);
296+
_wire -> beginTransmission((uint8_t)_i2caddr);
297+
_wire -> write((uint8_t)reg);
298+
_wire -> endTransmission();
299+
_wire -> requestFrom((uint8_t)_i2caddr, (byte)3);
274300

275-
value = Wire.read();
301+
value = _wire -> read();
276302
value <<= 8;
277-
value |= Wire.read();
303+
value |= _wire -> read();
278304
value <<= 8;
279-
value |= Wire.read();
305+
value |= _wire -> read();
280306
} else {
281307
if (_sck == -1)
282308
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0));

Adafruit_BME280.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,12 @@ class Adafruit_BME280 {
165165
Adafruit_BME280(void);
166166
Adafruit_BME280(int8_t cspin);
167167
Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin);
168-
169-
bool begin(uint8_t addr = BME280_ADDRESS);
168+
169+
bool begin(void);
170+
bool begin(TwoWire *theWire);
171+
bool begin(uint8_t addr);
172+
bool begin(uint8_t addr, TwoWire *theWire);
173+
bool init();
170174

171175
void setSampling(sensor_mode mode = MODE_NORMAL,
172176
sensor_sampling tempSampling = SAMPLING_X16,
@@ -186,6 +190,7 @@ class Adafruit_BME280 {
186190

187191

188192
private:
193+
TwoWire *_wire;
189194
void readCoefficients(void);
190195
bool isReadingCalibration(void);
191196
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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ void setup() {
4040
bool status;
4141

4242
// default settings
43-
status = bme.begin();
43+
// (you can also pass in a Wire library object like &Wire2)
44+
status = bme.begin();
4445
if (!status) {
4546
Serial.println("Could not find a valid BME280 sensor, check wiring!");
4647
while (1);

0 commit comments

Comments
 (0)