From 4f53e91a1cba835396290399728696aae3b82b86 Mon Sep 17 00:00:00 2001 From: Oliver Cooper Date: Fri, 29 Dec 2017 21:39:38 +0000 Subject: [PATCH] Added ability to manually specify the pins for I2C transmission. --- src/SparkFunBME280.cpp | 9 +++++++-- src/SparkFunBME280.h | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/SparkFunBME280.cpp b/src/SparkFunBME280.cpp index 3c57513..10efe28 100644 --- a/src/SparkFunBME280.cpp +++ b/src/SparkFunBME280.cpp @@ -42,7 +42,11 @@ BME280::BME280( void ) settings.commInterface = I2C_MODE; //Can be I2C_MODE, SPI_MODE //Select address for I2C. Does nothing for SPI settings.I2CAddress = 0x77; //Ignored for SPI_MODE - //Select CS pin for SPI. Does nothing for I2C + //Select SDA pin for I2C. Does nothing for I2C + settings.I2C_SDAPin = -1; + //Select SCL pin for I2C. Does nothing for I2C + settings.I2C_SCLPin = -1; + //Select CS pin for I2C. Does nothing for I2C settings.chipSelectPin = 10; settings.runMode = 0; settings.tempOverSample = 0; @@ -69,7 +73,8 @@ uint8_t BME280::begin() { case I2C_MODE: - Wire.begin(); + if (settings.I2C_SDAPin == -1 || settings.I2C_SCLPin == -1) Wire.begin(); + else Wire.begin(settings.I2C_SDAPin, settings.I2C_SCLPin); break; case SPI_MODE: diff --git a/src/SparkFunBME280.h b/src/SparkFunBME280.h index f1a53d1..c4c65ce 100644 --- a/src/SparkFunBME280.h +++ b/src/SparkFunBME280.h @@ -94,7 +94,9 @@ struct SensorSettings //Main Interface and mode settings uint8_t commInterface; uint8_t I2CAddress; - uint8_t chipSelectPin; + uint8_t I2C_SDAPin; + uint8_t I2C_SCLPin; + uint8_t chipSelectPin; uint8_t runMode; uint8_t tStandby;