const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {2, 3, 4, 5}; // Подключение строк byte colPins[COLS] = {6, 7, 8, 9}; // Подключение столбцов void setup() { Serial.begin(9600); for (byte c = 0; c < COLS; c++) { pinMode(colPins[c], INPUT_PULLUP); // Столбцы как входы с подтяжкой } for (byte r = 0; r < ROWS; r++) { pinMode(rowPins[r], OUTPUT); digitalWrite(rowPins[r], LOW); // Изначально строки отключены } } void loop() { for (byte r = 0; r < ROWS; r++) { digitalWrite(rowPins[r], HIGH); // active for rows for (byte c = 0; c < COLS; c++) { if (digitalRead(colPins[c]) == HIGH) { // if have high level for button then print Serial.println(keys[r][c]); delay(300); // delay } } digitalWrite(rowPins[r], LOW); // Выключаем строку } }