const int dataPin = 4; // QH
const int clockPin = 5; // CP
const int loadPin = 6; // PL
const int LOAD_PIN = 6; // PL: Parallel Load (active LOW)
const int CLOCK_PIN = 5; // CP: Clock (rising edge shifts data)
const int DATA_PIN = 4; // QH: Serial data from last 74HC165
const int CLK_EN_PIN = 11; // CE: Clock Enable (active LOW)
const int NUM_CHIPS = 5;
const int TOTAL_BITS = NUM_CHIPS * 8;
void setup() {
Serial.begin(9600);
pinMode(LOAD_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(CLK_EN_PIN, OUTPUT);
pinMode(DATA_PIN, INPUT);
digitalWrite(CLOCK_PIN, LOW);
digitalWrite(CLK_EN_PIN, LOW); // Enable shifting
digitalWrite(LOAD_PIN, HIGH); // Start unlatched
}
void loop() {
// Trigger parallel load
digitalWrite(LOAD_PIN, LOW);
delayMicroseconds(5); // Small delay to latch data
digitalWrite(LOAD_PIN, HIGH);
// Read each bit
Serial.print("Bits: ");
for (int i = 0; i < TOTAL_BITS; i++) {
int bitVal = digitalRead(DATA_PIN);
Serial.print(bitVal);
// Shift to next bit
digitalWrite(CLOCK_PIN, HIGH);
delayMicroseconds(1); // Short delay for clock pulse
digitalWrite(CLOCK_PIN, LOW);
}
Serial.println();
delay(500); // Read every half second
}