summaryrefslogtreecommitdiff
path: root/MCP23017
diff options
context:
space:
mode:
Diffstat (limited to 'MCP23017')
-rw-r--r--MCP23017/MCP23017.ino45
-rw-r--r--MCP23017/mcp20317_schemss.jpgbin0 -> 21944 bytes
-rw-r--r--MCP23017/with_lib/with_lib.ino28
3 files changed, 73 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);
+}
diff --git a/MCP23017/mcp20317_schemss.jpg b/MCP23017/mcp20317_schemss.jpg
new file mode 100644
index 0000000..5231394
--- /dev/null
+++ b/MCP23017/mcp20317_schemss.jpg
Binary files 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 <mcp23017.h>
+
+#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);
+}