Hi.
I'm trying, to expand outputs with MCP23017, but it's in no way stable, so i must be doing something wrong.
Here is my test code
#include <Wire.h>
#include <Adafruit_MCP23X17.h>
#define MCP_LED1 0
#define MCP_LED2 1
#define MCP_LED3 2
#define MCP_LED4 3
#define MCP_LED5 4
#define MCP_LED6 5
#define MCP_LED7 6
#define MCP_LED8 7
#define MCP_LED9 8
#define MCP_LED10 9
#define MCP_LED11 10
#define MCP_LED12 11
#define MCP_LED13 12
#define MCP_LED14 13
#define MCP_LED15 14
#define MCP_LED16 15
#define MCP_INT_ODR false
Adafruit_MCP23X17 mcp;
void setup() {
mcp.begin_I2C(); // use default address 0
mcp.pinMode(MCP_LED1, OUTPUT);
mcp.pinMode(MCP_LED2, OUTPUT);
mcp.pinMode(MCP_LED3, OUTPUT);
mcp.pinMode(MCP_LED4, OUTPUT);
mcp.pinMode(MCP_LED5, OUTPUT);
mcp.pinMode(MCP_LED6, OUTPUT);
mcp.pinMode(MCP_LED7, OUTPUT);
mcp.pinMode(MCP_LED8, OUTPUT);
mcp.pinMode(MCP_LED9, OUTPUT);
mcp.pinMode(MCP_LED10, OUTPUT);
mcp.pinMode(MCP_LED11, OUTPUT);
mcp.pinMode(MCP_LED12, OUTPUT);
mcp.pinMode(MCP_LED13, OUTPUT);
mcp.pinMode(MCP_LED14, OUTPUT);
mcp.pinMode(MCP_LED15, OUTPUT);
mcp.pinMode(MCP_LED16, OUTPUT);
// LED output
mcp.digitalWrite(MCP_LED1,LOW);
mcp.digitalWrite(MCP_LED2,LOW);
mcp.digitalWrite(MCP_LED3,LOW);
mcp.digitalWrite(MCP_LED4,LOW);
mcp.digitalWrite(MCP_LED5,LOW);
mcp.digitalWrite(MCP_LED6,LOW);
mcp.digitalWrite(MCP_LED7,LOW);
mcp.digitalWrite(MCP_LED8,LOW);
mcp.digitalWrite(MCP_LED9,LOW);
mcp.digitalWrite(MCP_LED10,LOW);
mcp.digitalWrite(MCP_LED11,LOW);
mcp.digitalWrite(MCP_LED12,LOW);
mcp.digitalWrite(MCP_LED13,LOW);
mcp.digitalWrite(MCP_LED14,LOW);
mcp.digitalWrite(MCP_LED15,LOW);
mcp.digitalWrite(MCP_LED16,LOW);
}
void loop(){
mcp.digitalWrite(MCP_LED1, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED2, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED3, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED4, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED5, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED6, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED7, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED8, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED9, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED10, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED11, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED12, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED13, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED14, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED15, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED16, HIGH);
delay(300);
mcp.digitalWrite(MCP_LED1, LOW);
delay(300);
mcp.digitalWrite(MCP_LED2, LOW);
delay(300);
mcp.digitalWrite(MCP_LED3, LOW);
delay(300);
mcp.digitalWrite(MCP_LED4, LOW);
delay(300);
mcp.digitalWrite(MCP_LED5, LOW);
delay(300);
mcp.digitalWrite(MCP_LED6, LOW);
delay(300);
mcp.digitalWrite(MCP_LED7, LOW);
delay(300);
mcp.digitalWrite(MCP_LED8, LOW);
delay(300);
mcp.digitalWrite(MCP_LED9, LOW);
delay(300);
mcp.digitalWrite(MCP_LED10, LOW);
delay(300);
mcp.digitalWrite(MCP_LED11, LOW);
delay(300);
mcp.digitalWrite(MCP_LED12, LOW);
delay(300);
mcp.digitalWrite(MCP_LED13, LOW);
delay(300);
mcp.digitalWrite(MCP_LED14, LOW);
delay(300);
mcp.digitalWrite(MCP_LED15, LOW);
delay(300);
mcp.digitalWrite(MCP_LED16, LOW);
delay(300);
}
