#define DataOut 2
#define SERCLK  3
#define Latch   4
#define DataIn  5

byte inputData, bitData;

void setup() {
  pinMode(DataOut, OUTPUT);
  pinMode(SERCLK, OUTPUT);
  pinMode(Latch, OUTPUT);
  pinMode(DataIn, INPUT);

}

void loop() {
  digitalWrite(Latch, LOW);
  shiftOut(DataOut, SERCLK, MSBFIRST, inputData);
  digitalWrite(Latch, HIGH);
  
  digitalWrite(Latch, LOW);
  delayMicroseconds(5);
  digitalWrite(Latch, HIGH);

  inputData = 0;

  for(int i = 0; i < 8; i++) {
    bitData = digitalRead(DataIn);
    inputData |= (bitData << i);

    digitalWrite(SERCLK, HIGH);
    delayMicroseconds(5);
    digitalWrite(SERCLK, LOW);
  }

}
74HC595
74HC165