From fb9cb6c32e04434fd689aea99143d96aa2811656 Mon Sep 17 00:00:00 2001 From: Abel Tim Date: Wed, 5 Jun 2024 20:46:26 +0200 Subject: add mcp --- MCP23017/MCP23017.ino | 45 +++++++++++++++++++++++++++++++++++++++++ MCP23017/mcp20317_schemss.jpg | Bin 0 -> 21944 bytes MCP23017/with_lib/with_lib.ino | 28 +++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 MCP23017/MCP23017.ino create mode 100644 MCP23017/mcp20317_schemss.jpg create mode 100644 MCP23017/with_lib/with_lib.ino (limited to 'MCP23017') 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 +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); +} diff --git a/MCP23017/mcp20317_schemss.jpg b/MCP23017/mcp20317_schemss.jpg new file mode 100644 index 0000000..5231394 Binary files /dev/null and b/MCP23017/mcp20317_schemss.jpg differ diff --git a/MCP23017/with_lib/with_lib.ino b/MCP23017/with_lib/with_lib.ino new file mode 100644 index 0000000..f99065a --- /dev/null +++ b/MCP23017/with_lib/with_lib.ino @@ -0,0 +1,28 @@ +/** Inputs.ino + * Sets port 7 on bank B to INPUT_PULLUP and copies its + * state to the built-in LED on the board + * https://github.com/ndomx/MCP23017-Arduino-Library + */ + +#include + +#define MCP_ADDR (0) + +MCP23017 mcp(MCP_ADDR); + +void setup(void) +{ + Serial.begin(9600); + pinMode(LED_BUILTIN, OUTPUT); + + mcp.start(); + mcp.pinMode(GPB7, INPUT_PULLUP); +} + +void loop(void) +{ + byte mcp_input = mcp.digitalRead(GPB7); + digitalWrite(LED_BUILTIN, mcp_input); + Serial.println(mcp_input); + delay(500); +} -- cgit v1.2.3