const int latchPin = 5;
const int clockPin = 4;
const int dataPin = 3;
const int buttonPin = 9;
const int numBits = 8; // 8 * number of shift registers
int lastState = HIGH;
void setup() {
Serial.begin(115200);
// D5 is PL activate
// D4 is CP for clock
pinMode(dataPin, INPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void readSwitch() {
// Set PL high
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
Serial.println("Bits: ");
int bits[] = {};
for (int i = 0; i < numBits; i++) {
int bit = digitalRead(dataPin);
if (bit == HIGH) {
Serial.print("1");
bits[i] = 1;
} else {
Serial.print("0");
bits[i] = 0;
}
digitalWrite(clockPin, HIGH); // Shift out the next bit
digitalWrite(clockPin, LOW);
}
Serial.println("");
for (int i = 0; i < numBits; i++) {
Serial.print(bits[i]);
}
}
void loop() {
byte buttonPressed = digitalRead(buttonPin);
if (lastState != buttonPressed) {
lastState = buttonPressed;
if (buttonPressed == HIGH) {
Serial.println(" released");
readSwitch();
}
if (buttonPressed == LOW) {
Serial.println(" pressed");
}
}
}