Hi.
I'm trying to add 8 expander inputs with interupts, but with no luck.
I need to have the interrupts in CHANGE mode.
I use 2 expanders.
the function if(!digitalRead(digitalRead(INT_PIN))){ does not react as i would like it to.
What am i missing?
All the best.
#include <Adafruit_MCP23X17.h>
#include <Wire.h>
#define MCP_INT_ODR false
Adafruit_MCP23X17 mcp;
Adafruit_MCP23X17 mcp2;
#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 MCP2_Encoder1 0
#define MCP2_Encoder2 1
#define MCP2_Encoder3 2
#define MCP2_Encoder4 3
#define MCP2_Encoder5 4
#define MCP2_Encoder6 5
#define MCP2_Encoder7 6
#define MCP2_Encoder8 7
#define INT_PIN 15
void setup(){
Serial.begin(115200);
mcp.begin_I2C(0x20);
mcp2.begin_I2C(0x22);
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);
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,HIGH);
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);
mcp2.pinMode(MCP2_Encoder1, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder2, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder3, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder4, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder5, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder6, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder7, INPUT_PULLUP);
mcp2.pinMode(MCP2_Encoder8, INPUT_PULLUP);
mcp.setupInterrupts(true, false, LOW);
mcp.setupInterruptPin(MCP2_Encoder1, LOW);
}
void loop(){
Serial.println("23017 Test");
Serial.println(digitalRead(INT_PIN));
if(!digitalRead(digitalRead(INT_PIN))){
mcp.digitalWrite(MCP_LED8,HIGH);
Serial.println("Interupted");
Serial.println(mcp2.digitalRead(MCP2_Encoder1));
mcp2.clearInterrupts();
}
delay(500);
mcp.digitalWrite(MCP_LED8,LOW);
delay(500);
}