Thanks!!!
I got it to work by using the MCP23017 library.
#include <Adafruit_MCP23017.h>
#include <String.h>
Adafruit_MCP23017 mcp1;
Adafruit_MCP23017 mcp2;
Adafruit_MCP23017 mcp3;
// pins 15~17 to GND, I2C bus address is 0x20
#include "Wire.h"
//Definiation
#define addr1 0 //addr 1=A2 low, A1 low, A0 low = "000"
#define addr2 1 //addr 2 = A2 low, A1 low, A0 high = "001"
#define addr3 2 //addr 3= A2 low , A1 high, A0 low= "010"
const byte GPIOA = 0x12; //Register address of port A
const byte GPIOB = 0x13; //Register address of port B
int arry[100];
long Absolute_value = 0;
long Board_Num = 0;
byte inputs=0;
void setup()
{
mcp1.begin(addr1);
mcp2.begin(addr2);
mcp3.begin(addr3);
mcp1.pinMode(0, INPUT);
mcp1.pinMode(1, INPUT);
mcp1.pinMode(2, INPUT);
mcp1.pinMode(3, INPUT);
mcp1.pinMode(4, INPUT);
mcp1.pinMode(5, INPUT);
mcp1.pinMode(6, INPUT);
mcp1.pinMode(7, INPUT);
mcp1.pinMode(8, INPUT);
mcp1.pinMode(9, INPUT);
mcp1.pinMode(10, INPUT);
mcp1.pinMode(11, INPUT);
mcp1.pinMode(12, INPUT);
mcp1.pinMode(13, INPUT);
mcp1.pinMode(14, INPUT);
mcp1.pinMode(15, INPUT);
mcp2.pinMode(0, INPUT);
mcp2.pinMode(1, INPUT);
mcp2.pinMode(2, INPUT);
mcp2.pinMode(3, INPUT);
mcp2.pinMode(4, INPUT);
mcp2.pinMode(5, INPUT);
mcp2.pinMode(6, INPUT);
mcp2.pinMode(7, INPUT);
mcp2.pinMode(8, INPUT);
mcp2.pinMode(9, INPUT);
mcp2.pinMode(10, INPUT);
mcp2.pinMode(11, INPUT);
mcp2.pinMode(12, INPUT);
mcp2.pinMode(13, INPUT);
mcp2.pinMode(14, INPUT);
mcp2.pinMode(15, INPUT);
mcp3.pinMode(0, INPUT);
mcp3.pinMode(1, INPUT);
mcp3.pinMode(2, INPUT);
mcp3.pinMode(3, INPUT);
mcp3.pinMode(4, INPUT);
mcp3.pinMode(5, INPUT);
mcp3.pinMode(6, INPUT);
mcp3.pinMode(7, INPUT);
mcp3.pinMode(8, INPUT);
mcp3.pinMode(9, INPUT);
mcp3.pinMode(10, INPUT);
mcp3.pinMode(11, INPUT);
mcp3.pinMode(12, INPUT);
mcp3.pinMode(13, INPUT);
mcp3.pinMode(14, INPUT);
mcp3.pinMode(15, INPUT);
Serial.begin(9600);
// Wire.begin(); // wake up I2C bus
}
void source (int pin) //Sourcing function in the class, this needs works to get working
{
//pin = 0;
mcp1.pinMode (0, OUTPUT);
mcp1.digitalWrite (0, HIGH);
delay (1000);
}
void loop()
{
//Serial.print("hello");
for (int i = 0; i<16; i++)
{
arry[i] = mcp1.digitalRead(i);
}
for (int i = 0; i<16; i++)
{
arry[i+15] = mcp2.digitalRead(i);
}
for (int i = 0; i<16; i++)
{
arry[i+31] = mcp3.digitalRead(i);
}
for (int i = 0; i<100; i++)
{
Serial.print (i);
Serial.print(":");
Serial.println (arry[i]);
}
delay(200);
for (int i = 0; i<100; i++)
{
if(arry[i] == 1)
{
Absolute_value = (Board_Num*160) + i + 1;
// Serial.print ("Absolute_value");
//Serial.print (":");
//Serial.println(Absolute_value, DEC);
}
}
Serial.print ("Absolute_value");
Serial.print (":");
Serial.println(Absolute_value, DEC);
Absolute_value = 0;
};