Introduction: Electronic Voting Machine (EVM) Using Arduino Nano
Introduction
This documentation describes the design and implementation of an Electronic Voting Machine (EVM) using an Arduino Nano. The EVM is a simple, secure, and effective way to conduct elections, ensuring accurate and tamper-proof results. The project was successfully implemented in a student election.
Supplies
Components Used
- Arduino Nano
- 7 Push Buttons (for casting votes and control functions)
- Buzzer (for confirmation sounds)
- I2C LCD Display (for displaying messages and results)
- Breadboard (for prototyping connections)
- Hard Wiring (for stable connections)
- 1 LED (for indicating voting activity or completion
Step 1: Circuit Diagram
Pin Descriptions:
- Button Pins:
- button1 (Pin 2) → Votes for candidate A.
- button2 (Pin 3) → Votes for candidate B.
- button3 (Pin 4) → Votes for candidate C.
- button4 (Pin 5) → Votes for candidate D.
- button5 (Pin 6) → Votes for candidate E.
- button6 (Pin 7) → Votes for candidate F.
- button7 (Pin 8) → Resets all votes (Reset button).
- LED Pins:
- greenLED (Pin 9) → Indicates a successful vote confirmation.
- redLED (Pin 10) → Reserved for future use (e.g., error indication).
- I2C LCD Pins:
- I2C Interface:
- The LiquidCrystal_I2C library uses the default SDA (A4) and SCL (A5) pins for communication with the LCD module.
- The I2C address is set to 0x27, and the LCD size is 16x2.
Pin Modes:
- Inputs:
- All buttons (button1 to button7) are configured as INPUT_PULLUP, meaning they use internal pull-up resistors to stay HIGH when not pressed and go LOW when pressed.
- Outputs:
- LEDs (greenLED and redLED) are configured as outputs to control their ON/OFF state.
Functional Summary:
- Voting Buttons (Pins 2–7): Each button corresponds to a unique candidate. Pressing a button increments the vote count for that candidate and triggers the green LED to confirm the vote.
- Reset Button (Pin 8): Resets all vote counters to zero.
- Green LED (Pin 9): Flashes to indicate that a vote has been successfully recorded.
- Red LED (Pin 10): Placeholder for potential error or feedback signals.
- LCD: Displays the welcome message, current vote counts, and other necessary information. It uses the I2C communication protocol.
Step 2: Software Implementation
The program is written in Arduino IDE. Below is a breakdown of the functionalities:
- Initialization: Set up the pins for the buttons, buzzer, LCD, and LED. Initialize the I2C communication for the LCD.
- Voting Process:
- Display candidate names on the LCD.
- Detect button presses and increment the vote count for the corresponding candidate.
- Trigger the buzzer for confirmation.
- Briefly light up the LED when a vote is cast.
- Results Display:
- After voting ends, display the total votes for each candidate on the LCD.
Attachments
Step 3: Implementation in Student Election
The EVM was set up in the voting area with each button assigned to a candidate. Students voted by pressing the corresponding button. The buzzer confirmed each vote, and the LED indicated activity. After voting concluded, the results were displayed on the LCD and recorded.


