diff --git a/Adafruit_MCP23017.cpp b/Adafruit_MCP23017.cpp index aba5e0b..b8f6f82 100644 --- a/Adafruit_MCP23017.cpp +++ b/Adafruit_MCP23017.cpp @@ -116,6 +116,23 @@ void Adafruit_MCP23017::begin(uint8_t addr) { writeRegister(MCP23017_IODIRB,0xff); } +/** + * Initializes the MCP23017 given its HW selected address, see datasheet for Address selection. + */ +void Adafruit_MCP23017::begin(uint8_t addr, uint8_t sda_pin, uint8_t scl_pin) { + if (addr > 7) { + addr = 7; + } + i2caddr = addr; + + Wire.begin(sda_pin, scl_pin); + + // set defaults! + // all inputs on port A and B + writeRegister(MCP23017_IODIRA,0xff); + writeRegister(MCP23017_IODIRB,0xff); +} + /** * Initializes the default MCP23017, with 000 for the configurable part of the address */ diff --git a/Adafruit_MCP23017.h b/Adafruit_MCP23017.h index 3793aec..6e5d9dd 100644 --- a/Adafruit_MCP23017.h +++ b/Adafruit_MCP23017.h @@ -31,6 +31,7 @@ class Adafruit_MCP23017 { public: void begin(uint8_t addr); + void begin(uint8_t addr, uint8_t sda_pin, uint8_t scl_pin); void begin(void); void pinMode(uint8_t p, uint8_t d);