const int rows[] = {4, 5}; const int kRows = 2; const int columns[] = {6, 7}; const int kColumns = 2; bool buttons[] = {false, false, false, false}; void setup() { for (int i = 0; i < kRows; i++) { pinMode(rows[i], INPUT_PULLUP); } for (int i = 0; i < kColumns; i++) { pinMode(columns[i], INPUT); } Serial.begin(9600); } bool scanKey(int row, int column) { pinMode(columns[column], OUTPUT); digitalWrite(columns[column], LOW); bool pressed = digitalRead(rows[row]) == LOW; pinMode(columns[column], INPUT); return pressed; } void loop() { // pinMode(4, INPUT_PULLUP); // if (digitalRead(4) == LOW) { // Serial.print("pushed: "); // Serial.println(columns[0]); // } else { // Serial.println("not pushed"); // } for (int i = 0; i < kRows; i++) { for (int j = 0; j < kColumns; j++) { bool pressed = scanKey(i, j); if (pressed != buttons[i * kColumns + j]) { if (pressed) { Serial.print("Button pressed: "); } else { Serial.print("Button released: "); } Serial.println(i * kColumns + j); buttons[i * kColumns + j] = pressed; } } } }