// constants won't change: const long interval = 25; // 25 ms * 6 tests * 2 = 200 ms means 5 loops per second 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); } bool testConnection2(int A, int B) { for (int i = 0; i < 4; i++) { if (i == A) { pinMode(buttons[i], OUTPUT); digitalWrite(buttons[i], LOW); } else { pinMode(buttons[i], INPUT_PULLUP); } } delay(interval); if (!digitalRead(buttons[B])) { return true; } else { return false; } } bool testConnection(int A, int B) { return testConnection2(A, B) && testConnection2(B, A); } void loop() { if (testConnection(0, 1)) { Serial.println("0011"); } else if (testConnection(0, 2)) { Serial.println("0101"); } else if (testConnection(0, 3)) { Serial.println("1001"); } else if (testConnection(1, 2)) { Serial.println("0110"); } else if (testConnection(1, 3)) { Serial.println("1010"); } else if (testConnection(2, 3)) { Serial.println("1100"); } }