From 60d086bb3ae734d1509acdecd315fd148747a19a Mon Sep 17 00:00:00 2001 From: khaled147 Date: Fri, 11 Mar 2022 01:13:12 -0700 Subject: [PATCH] Implementation of software serial using any pin Implementation of function to allow user selection of SDA/SCL pins --- libraries/Wire/Wire.cpp | 6 ++++++ libraries/Wire/Wire.h | 1 + 2 files changed, 7 insertions(+) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index a17bb019a..ebcce59c9 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -31,6 +31,12 @@ void arduino::MbedI2C::begin() { master = new mbed::I2C(_sda, _scl); } +void arduino::MbedI2C::begin(int sda, int scl) { + _sda = digitalPinToPinName(sda); + _scl = digitalPinToPinName(scl); + master = new mbed::I2C(_sda, _scl); +} + void arduino::MbedI2C::begin(uint8_t slaveAddr) { #ifdef DEVICE_I2CSLAVE slave = new mbed::I2CSlave((PinName)_sda, (PinName)_scl); diff --git a/libraries/Wire/Wire.h b/libraries/Wire/Wire.h index 63e174add..a0905a040 100644 --- a/libraries/Wire/Wire.h +++ b/libraries/Wire/Wire.h @@ -37,6 +37,7 @@ class MbedI2C : public HardwareI2C MbedI2C(int sda, int scl); MbedI2C(PinName sda, PinName scl); virtual void begin(); + virtual void begin(int sda, int scl); #ifndef DEVICE_I2CSLAVE virtual void __attribute__ ((error("I2C Slave mode is not supported"))) begin(uint8_t address); #else