Six party inputs
Dedicated physical buttons with full-name confirmation before storage.
EDUCATIONAL WORKING PROTOTYPE ARDUINO · EMBEDDED SYSTEMS · 2026
A button-operated demonstration of voting interaction: choose one of six fictional parties, review the full name, confirm or cancel, persist the result, and return to ready.
made by Chitraksh AND Ansh did not make it
The device demonstrates the flow of a six-party electronic voting machine using physical inputs, confirmation logic, persistent totals, protected operator access, and small-display feedback.
Every voter-facing selection includes the party number and full fictional party name, while operator actions require deliberate holds or a protected entry flow.
Dedicated physical buttons with full-name confirmation before storage.
Green records exactly one vote; red exits without changing totals.
Six 32-bit totals survive reset or power loss.
A four-digit code is entered with party buttons before results open.
The interface reports one leader or every party sharing the highest total.
A three-second green-button hold clears all stored totals from results.
The OLED interface is mirrored by a complete 9600-baud Serial Monitor fallback.
An explicit state machine avoids long blocking delays while scanning inputs.
The sketch keeps button scanning responsive and changes each control’s meaning according to the active screen.
Voter flow
Operator flow
The build uses a 0.96-inch 128×64 four-pin I2C OLED, six party buttons, green and red controls, jumper wires, and a breadboard or terminal strip. Every button is wired to ground and read through INPUT_PULLUP.
| Device / control | Module pin | Arduino Uno | Connection notes |
|---|---|---|---|
| OLED | GND | GND | Common ground |
| OLED | VCC | 5V | Identified 3–5 V-compatible module |
| OLED | SCK | A5 | I2C clock / SCL |
| OLED | SDA | A4 | I2C data |
| Party 1 | Button | D2 | Other terminal to GND |
| Party 2 | Button | D3 | Other terminal to GND |
| Party 3 | Button | D4 | Other terminal to GND |
| Party 4 | Button | D5 | Other terminal to GND |
| Party 5 | Button | D6 | Other terminal to GND |
| Party 6 | Button | A0 | Digital input; other terminal to GND |
| GREEN | Button | A1 | Confirm / submit / reset; other terminal to GND |
| RED | Button | A2 | Cancel / delete / return; other terminal to GND |
An explicit state machine manages READY, CONFIRM, MESSAGE, CREDITS, PASSCODE, and RESULTS. Inputs use 30 ms software debouncing; the six vote counters are loaded from EEPROM at startup and written only after a confirmed vote or explicit reset.
No long blocking delays while controls are active. Transitions define exactly what each button means.
SSD1306 rendering at I2C address 0x3C is mirrored by Serial Monitor output at 9600 baud.
A magic marker validates storage. Totals are written only on confirmation or reset to limit EEPROM wear.
The complete interaction was tested through Serial Monitor before the display was integrated. Testing covers all buttons, save and cancel paths, persistence, wrong and correct operator codes, ties, reset behavior, and the exact credit sentence.
Building the prototype connected interface decisions with pin-level constraints and made hardware diagnosis part of the software process.
Review the complete technical documentation, inspect the Arduino firmware, or print compact voter and operator references.