mirror of
https://github.com/adafruit/Adafruit-BMP085-Library.git
synced 2026-09-22 18:36:51 +00:00
Merge pull request #29 from adafruit/samyk-master
add optional Wire interface
This commit is contained in:
2 files changed
+15
-8
No files matched your search
+12
-6
@@ -31,14 +31,20 @@
|
||||
#include "Adafruit_BMP085.h"
|
||||
#include <Adafruit_I2CDevice.h>
|
||||
|
||||
Adafruit_BMP085::Adafruit_BMP085() : i2c_dev(BMP085_I2CADDR) {}
|
||||
Adafruit_BMP085::Adafruit_BMP085() {}
|
||||
|
||||
bool Adafruit_BMP085::begin(uint8_t mode) {
|
||||
bool Adafruit_BMP085::begin(uint8_t mode, TwoWire *wire) {
|
||||
if (mode > BMP085_ULTRAHIGHRES)
|
||||
mode = BMP085_ULTRAHIGHRES;
|
||||
oversampling = mode;
|
||||
|
||||
if (!i2c_dev.begin()) {
|
||||
if (i2c_dev) {
|
||||
delete i2c_dev; // remove old interface
|
||||
}
|
||||
|
||||
i2c_dev = new Adafruit_I2CDevice(BMP085_I2CADDR, wire);
|
||||
|
||||
if (!i2c_dev->begin()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -279,7 +285,7 @@ uint8_t Adafruit_BMP085::read8(uint8_t a) {
|
||||
uint8_t ret;
|
||||
|
||||
// send 1 byte, reset i2c, read 1 byte
|
||||
i2c_dev.write_then_read(&a, 1, &ret, 1, true);
|
||||
i2c_dev->write_then_read(&a, 1, &ret, 1, true);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -291,7 +297,7 @@ uint16_t Adafruit_BMP085::read16(uint8_t a) {
|
||||
// send 1 byte, reset i2c, read 2 bytes
|
||||
// we could typecast uint16_t as uint8_t array but would need to ensure proper
|
||||
// endianness
|
||||
i2c_dev.write_then_read(&a, 1, retbuf, 2, true);
|
||||
i2c_dev->write_then_read(&a, 1, retbuf, 2, true);
|
||||
|
||||
// write_then_read uses uint8_t array
|
||||
ret = retbuf[1] | (retbuf[0] << 8);
|
||||
@@ -301,5 +307,5 @@ uint16_t Adafruit_BMP085::read16(uint8_t a) {
|
||||
|
||||
void Adafruit_BMP085::write8(uint8_t a, uint8_t d) {
|
||||
// send d prefixed with a (a d [stop])
|
||||
i2c_dev.write(&d, 1, true, &a, 1);
|
||||
i2c_dev->write(&d, 1, true, &a, 1);
|
||||
}
|
||||
+3
-2
@@ -59,9 +59,10 @@ public:
|
||||
/*!
|
||||
* @brief Starts I2C connection
|
||||
* @param mode Mode to set, ultra high-res by default
|
||||
* @param wire The I2C interface to use, defaults to Wire
|
||||
* @return Returns true if successful
|
||||
*/
|
||||
bool begin(uint8_t mode = BMP085_ULTRAHIGHRES);
|
||||
bool begin(uint8_t mode = BMP085_ULTRAHIGHRES, TwoWire *wire = &Wire);
|
||||
/*!
|
||||
* @brief Gets the temperature over I2C from the BMP085
|
||||
* @return Returns the temperature
|
||||
@@ -101,7 +102,7 @@ private:
|
||||
uint16_t read16(uint8_t addr);
|
||||
void write8(uint8_t addr, uint8_t data);
|
||||
|
||||
Adafruit_I2CDevice i2c_dev;
|
||||
Adafruit_I2CDevice *i2c_dev;
|
||||
uint8_t oversampling;
|
||||
|
||||
int16_t ac1, ac2, ac3, b1, b2, mb, mc, md;
|
||||
|
||||
Reference in new issue
Block a user