// https://forum.arduino.cc/t/wiring-buttons-to-arduino/1000048
uint8_t const outPins[] {5, 4, 3, 2};
uint8_t const inPins[] {9, 8, 7, 6};
bool state[sizeof(outPins)][sizeof(inPins)] {};
void setup() {
Serial.begin(9600);
for (uint8_t const& pin: outPins) {
pinMode(pin, INPUT);
digitalWrite(pin, LOW);
}
for (uint8_t const& pin: inPins) {
pinMode(pin, INPUT_PULLUP);
}
}
void loop() {
for (size_t i {0}; i < sizeof(outPins); i++) {
pinMode(outPins[i], OUTPUT);
for (size_t j {0}; j < sizeof(inPins); j++) {
bool s {digitalRead(inPins[j])};
if (s == state[i][j]) {
Serial.print("Button ");
Serial.print(j);
Serial.print(i);
if (s) {
Serial.println(" released.");
}
else {
Serial.println(" pressed.");
}
state[i][j] = not s;
}
}
pinMode(outPins[i], INPUT);
}
}