const int rows[4] = {9, 8, 7, 6}; // r1, r2, r3, r4
const int cols[4] = {5, 4, 3, 2}; // c1, c2, c3, c4
char buttons[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
void setup() {
Serial.begin(9600);
for (int i = 0; i < 4; i++) {
pinMode(rows[i], OUTPUT);
digitalWrite(rows[i], HIGH); // пока не сканируем — держим HIGH
}
for (int i = 0; i < 4; i++) {
pinMode(cols[i], INPUT_PULLUP); // колонки с подтяжкой
}
Serial.println("Ready");
}
void loop() {
for (int r = 0; r < 4; r++) {
digitalWrite(rows[r], LOW); // активируем одну строку
for (int c = 0; c < 4; c++) {
if (digitalRead(cols[c]) == LOW) {
Serial.print("Nazhata knopka: ");
Serial.println(buttons[r][c]);
delay(200); // простая защита от дребезга
while (digitalRead(cols[c]) == LOW) {
; // ждём, пока отпустят кнопку
}
}
}
digitalWrite(rows[r], HIGH); // выключаем строку
}
}