/*
  Autor: Patrick Carriello
  Projeto: Projeto Jarvis
  Detalhes do projeto: https://www.youtube.com/watch?v=L3ky2-lCL8s&list=PLDZLfLztiVAkoGCS805bjnNVWhHrbzk_M
*/

// Pins 74HC165
#define PIN_DATA 3
#define PIN_CLOCK 4
#define PIN_LOAD 5

// Array
bool inArray[32] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

unsigned long tempo = 0;

void setup()
{
  Serial.begin(9600);

  pinMode(PIN_DATA, INPUT);
  pinMode(PIN_CLOCK, OUTPUT);
  pinMode(PIN_LOAD, OUTPUT);
}

void loop()
{
  unsigned long mi = micros();
  digitalWrite(PIN_LOAD, HIGH);
  for (int i = 0; i < 32; i++)
  {
    int inData = digitalRead(PIN_DATA);
    if (inData != inArray[i])
    {
      Serial.print("ID ");
      Serial.print(i + 1);
      Serial.print(" set to ");
      Serial.print(inData);
      Serial.print(", tempo do último loop: ");
      Serial.println(tempo);
    }
    inArray[i] = inData;
    // Clock
    digitalWrite(PIN_CLOCK, HIGH);
    digitalWrite(PIN_CLOCK, LOW);
  }
  digitalWrite(PIN_LOAD, LOW);
  tempo = micros() - mi;
}
74HC165
74HC165
74HC165
74HC165