int rows[] = {0, 1}; int columns[] = {2, 3, 4}; int pins[] = {14, 15, 16, 17, 18, 19}; void setup() { for (int i = 0; i < 2; i++) { pinMode(i, INPUT_PULLUP); } pinMode(13, OUTPUT); for (int i=0; i<6; i++) { pinMode(pins[i], OUTPUT); } } bool key_pressed(const int key) { const int row = key / 3; const int column = key % 3; pinMode(columns[column], OUTPUT); digitalWrite(columns[column], LOW); bool pressed = digitalRead(rows[row]) == LOW; pinMode(columns[column], INPUT); return pressed; } void loop() { digitalWrite(13, HIGH); for (int i=0; i<6; i++) { if (key_pressed(i)) { digitalWrite(pins[i], HIGH); } else { digitalWrite(pins[i], LOW); } } }