using MCP23017 I/O expander for inputs

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;
  
  
  
};