diff options
Diffstat (limited to 'MCP23017/MCP23017.ino')
| -rw-r--r-- | MCP23017/MCP23017.ino | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/MCP23017/MCP23017.ino b/MCP23017/MCP23017.ino new file mode 100644 index 0000000..30c75bc --- /dev/null +++ b/MCP23017/MCP23017.ino @@ -0,0 +1,45 @@ +//https://tronixstuff.com/2011/08/26/arduino-mcp23017-tutorial/ +//https://www.circuitbasics.com/how-to-use-an-mpc23017-port-expander-on-the-arduino/ +//https://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf + + + +#include <Wire.h> +byte BbyteVal=0; +byte AbyteVal=0; +byte chipAddr = 0x20; +byte GPIOA = 0x12; // PortA reg addr +byte GPIOB = 0x13; // PortB reg addr +byte IODIRA = 0x00; // PortA direction reg addr +byte IODIRB = 0x01; // PortB direction reg addr + +void setup(){ + Serial.begin(9600); + Wire.begin(); + + Wire.beginTransmission(chipAddr); + Wire.write(IODIRA); // IODIRA dir register + Wire.write(0xff); // set entire PORT A as output + Wire.endTransmission(); + + Wire.beginTransmission(chipAddr); + Wire.write(IODIRB); // IODIRB dir register + Wire.write(0xff); // set entire PORT B as input + Wire.endTransmission(); + } + +void loop(){ + Wire.beginTransmission(chipAddr); + Wire.write(GPIOB); // read the inputs off PORT B + Wire.requestFrom(chipAddr, 1); // ask for 1 byte + BbyteVal = Wire.read(); // read it + Wire.endTransmission(); + Serial.println(BbyteVal); + + Wire.beginTransmission(chipAddr); + Wire.write(GPIOB); // read the inputs off PORT B + Wire.requestFrom(chipAddr, 1); // ask for 1 byte + AbyteVal = Wire.read(); // read it + Wire.endTransmission(); + Serial.println(AbyteVal); +} |
