In the right side of the ConnDuino front, a breadboard has been arranged, for through hole components, allowing for project specific expansion needs. Furthermore, at the top right a voltage ladder is included to be normally used for push button input, using a single analog pin.
The breadboard area is laid down in an 8x13 hole pattern. A DPDT 5v relay may be fit in the 8 columns space. Conveniently, the Arduino ground as well 3.3V and 5V supply pins are very close to the center row of the breadboard. It is clarified here that none of the breadboard holes is grounded or connected to a supply rail. The user should be better making such decisions.
The buttons area (spot A in the above picture), supports up to six buttons. The intended final circuits are shown in the next picture. The left one is capable to recognize combinations of pressed buttons (for example buttons 1 and 3 pressed simultaneously). The right circuit is simpler (no Rb resistors), but when any two or more buttons are pressed, the program will recognize only one of them (which is the one closer to the 5V source). The wiring to be added, out of the board, appears in red color in the circuits below. Not all six buttons are required to be present, but when a button is connected, its respective resistor (R1-R6) should be installed too. Also, the installed buttons should start from position 1 without any gap between them.
This is how the above circuitry works. When no button is pressed the analog pin 3 reads a 5V input value. No current leaks to the ground. If any button is pressed, a connection between the 5V supply and the ground is realized. If using the circuit to the right, the current flows through a single path only. If using the left circuit, the current flows through a number of paths equal to the number of pressed buttons. At any case, for any button (or combination of buttons) a unique number of resistors is employed between the 5V supply and the ground, resulting in a different current intensity, and what matters most, in a distinctive voltage drop after the R1 resistor. Thus the voltage read in analog pin 3 will have a different value for each distinctive button (or buttons) pressed. The software will then be in position to determine appropriate actions for the button event. The values of the resistors R1-R6, Rb and RGND should maximize resolution of voltage readings at the analog pin. The possibility of simultaneously pressed buttons makes this objective much more complex. This is a problem to be solved with a future article.
If the jumper pads to the board backside (see picture below) are not bridged, then the analog pin 3 is detached completely from the buttons circuit and can be freely used for any other purpose.