Using only two digital pins for a button? (no GND, no VCC)
-
If I only have two digital pins left, could they be used to support a button? Online searches have proven fruitless.
For example:
- D4 functions as output, set to permanently high. >> [ button ] >> - D5 functions as input, with pullup resistor enabled.
Would this work? Or would this fry the Arduino/pin?
-
@alowhum almost, if you set D4 permanently LOW.
Then you button on D5 toggles between HIGH (when open, due to pullup) and LOW (when closed, shorted to D4).
-
@Yveaux Thanks!
// It works!
For anyone finding this:
In the Setup / Before function:
// BUTTON pinMode(BUTTON_OUTPUT_PIN, OUTPUT); // Set a digital pin as power output digitalWrite(BUTTON_OUTPUT_PIN, LOW); pinMode(BUTTON_INPUT_PIN, INPUT_PULLUP); // Set another digital pin as power input
In the loop:
wait(20); // ON DEVICE TOGGLE BUTTON if (digitalRead(BUTTON_INPUT_PIN) == LOW) { button_pressed = true; Serial.print(F(".")); }
-
Out of curiosity, would there be any practical reason for doing it this way? Maybe there is an advantage that I am not thinking of. It just seems though that it is a waste of a pin, not to mention that it is more code to get it working.
-
@dbemowsk The Nano only has so many GND and VCC pins. This allows me to connect a relay, an LED and this button directly with dupont wires. No breadboard/expansion board/soldering required.
-
@alowhum Seems a bit wasteful of Nano pins for the sake of 2 lines of Veroboard and some header pins though, but if it works for you...
-
@zboblamont It's not very wasteful if you're not using them for anything else anyway. I'd rather use some extra code than extra hardware.