/*
Wokwi | questions
MCP23017 assistance
Dimitar — March 31, 2025 at 11:17 PM
Hi guys im new to this and I wanted to simulate a MCP23017 and i made this project:
https://wokwi.com/projects/426989472514014209
I used a custom chip i found just by searching mcp23017 and nothing is reacting.
Please help! THANKS
*/
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include "MCP23017.h" // cool custom library
#define OLED_ADDR 0x3C
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
MCP23017 mcp;
const uint8_t MCP_PIN = 1; // GPA0
const uint8_t ARDUINO2 = 2; // setting output
void setup() {
Serial.begin(9600);
Wire.begin();
// Initialize OLED
display.setRotation(2);
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println(F("OLED failed"));
while (1);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Hello :)"); //hi future me
display.display();
// Setup MCP23017 at address 0x20
mcp.begin(0); // address 0 (defined by grounding all A pins)
mcp.pinMode(MCP_PIN, OUTPUT); //output
// Setup Arduino D2 to read from MCP output
pinMode(ARDUINO2, INPUT);
Serial.println("Setup done.");
}
void loop() {
// Toggle MCP pin HIGH
mcp.digitalWrite(MCP_PIN, HIGH);
delay(1000);
Serial.print("MCP23017 GPA0: HIGH | Arduino D2 reads: ");
Serial.println(digitalRead(ARDUINO2));
// Toggle MCP pin LOW
mcp.digitalWrite(MCP_PIN, LOW);
delay(1000);
Serial.print("MCP23017 GPA0: LOW | Arduino D2 reads: ");
Serial.println(digitalRead(ARDUINO2));
Serial.println("I------------------------I");
}address 0x20