// DIP Switch selector de modalidad
const int DSdataPin = 15;        /* Q7 */
const int DSclockPin = 16;       /* CP */
const int DSlatchPin = 17;       /* PL */
const int DSclockEnablePin = 18; /* CE */

const int startButton = 19;

void setup() {
  // put your setup code here, to run once:
  pinMode(DSdataPin, INPUT);
  pinMode(DSclockPin, OUTPUT);
  pinMode(DSclockEnablePin, OUTPUT);
  pinMode(DSlatchPin, OUTPUT);
}

uint8_t scanDS(void) {
  uint8_t dataIn = 0;
  
  digitalWrite(DSlatchPin, LOW);  // LD# - Leemos estado.
  delayMicroseconds(5);
  digitalWrite(DSlatchPin, HIGH); // SH - Cambiamos a shifting.
  delayMicroseconds(5);
  
  digitalWrite(DSclockPin, HIGH);
  digitalWrite(DSclockEnablePin, LOW);
  dataIn = shiftIn(DSdataPin, DSclockPin, LSBFIRST);
  digitalWrite(DSclockEnablePin, HIGH);
  Serial.println(dataIn, BIN);
  return dataIn;
}

void loop() {
  // put your main code here, to run repeatedly:
  if (digitalRead(startButton) == HIGH) {
    scanDS();
  }
}
74HC165