// Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated // constants won't change: const long interval = 500; // interval at which to blink (milliseconds) int pushButton1 = 2; int pushButton2 = 4; int pushButton3 = 6; int pushButton4 = 11; int buttons[4] = {pushButton1, pushButton2, pushButton3, pushButton4}; void setup() { // set the digital pin as output: Serial.begin(9600); pinMode(pushButton1, OUTPUT); digitalWrite(pushButton1, LOW); pinMode(pushButton2, INPUT_PULLUP); pinMode(pushButton3, INPUT_PULLUP); pinMode(pushButton4, INPUT_PULLUP); } void loop() { bool received_input = false; for (int ii = 0; ii < 4; ii++) { for (int jj = 0; jj < 4; jj++) { if (jj == ii) { pinMode(buttons[jj], OUTPUT); digitalWrite(buttons[jj], LOW); } else { pinMode(buttons[jj], INPUT_PULLUP); } } for (int jj = ii; jj < 4; jj++) { if (!(ii == jj) && !digitalRead(buttons[jj])) { for (int kk = 3; kk >= 0; kk--) { if (kk == ii || kk == jj) { Serial.print(1); } else { Serial.print(0); } } Serial.print("\n"); received_input = true; break; } } if (received_input) { break; } } }