// ===== Пины подключения к Arduino =====
const int dataPin = 4; // Q7
const int clockPin = 5; // CP
const int loadPin = 6; // PL / LOAD
void setup() {
Serial.begin(9600); // старт Serial Monitor
pinMode(dataPin, INPUT); // Q7 как вход
pinMode(clockPin, OUTPUT);
pinMode(loadPin, OUTPUT);
digitalWrite(clockPin, LOW);
digitalWrite(loadPin, HIGH); // изначально выключаем параллельную загрузку
}
// ===== Функция для чтения всех 8 кнопок =====
byte read8Buttons() {
digitalWrite(loadPin, LOW); // параллельная загрузка (сохраняем состояние кнопок)
delayMicroseconds(5); // маленькая пауза
digitalWrite(loadPin, HIGH); // начинаем последовательный вывод
// читаем 8 бит с регистра (LSBFIRST → бит 0 = D0)
byte buttons = shiftIn(dataPin, clockPin, LSBFIRST);
return buttons;
}
void loop() {
byte buttons = read8Buttons(); // считываем все 8 кнопок
// Выводим состояние в бинарном виде
Serial.print("Buttons: ");
for (int i = 7; i >= 0; i--) { // выводим с бита 7 до 0
Serial.print(bitRead(buttons, i));
}
Serial.println();
delay(200); // обновление каждые 200 мс
}