Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

🗳️ Building a Simple Electronic Voting Machine (EVM) with Arduino

Author: Namit Seth
Project Repository: EVM-V2 on GitHub
TinkerCAD Simulation: Live Circuit Simulation


🔧 Introduction

Electronic Voting Machines (EVMs) are a modern replacement for traditional ballot paper-based voting systems. They offer faster results, reduced human error, and are environmentally friendly. In this blog, I’ll walk you through my Arduino-based EVM Project (V2)—a simplified version that demonstrates the working of a voting machine with live vote tallying and result display on an LCD screen.


🧠 Project Objective

To simulate an EVM that:

  • Allows three candidates to receive votes via push buttons.
  • Displays a real-time voting interface.
  • Shows the winner after voting ends.
  • Uses simple components that can be breadboarded and simulated using TinkerCAD.

🔩 Components Used

  • 1 x Arduino Uno
  • 1 x 16x2 LCD display
  • 3 x Push buttons (for voting)
  • 1 x Push button (to end voting & show result)
  • 3 x LEDs (to indicate votes being cast)
  • 1 x Buzzer (to confirm button press)
  • Resistors: 220Ω, 1kΩ
  • Breadboard and jumper wires

🔌 Circuit Diagram

Circuit Diagram

🔗 View on TinkerCAD


💻 How It Works

  1. Initialization: The LCD displays a welcome message. All vote counters are set to zero.
  2. Voting Process:
    • Each push button corresponds to a candidate.
    • On pressing a button:
      • The respective vote counter increases.
      • The LED blinks and the buzzer sounds as feedback.
  3. Ending Voting:
    • Press the “Result” button to stop voting.
    • The LCD displays the vote count for each candidate and highlights the winner.
    • In case of a tie, the LCD indicates it.

🧠 Code Overview

The project logic is written in Arduino’s C-style syntax. You can find the full .ino file here.

Some key logic includes:

if (digitalRead(button1) == HIGH) {
  votesA++;
  tone(buzzer, 1000, 200);
  digitalWrite(led1, HIGH);
  delay(200);
  digitalWrite(led1, LOW);
}

The LCD library (LiquidCrystal.h) is used to handle display outputs:

lcd.setCursor(0, 0);
lcd.print("Votes A: ");
lcd.print(votesA);

🔍 What I Learned

  • Basics of user interface feedback using LCD and buzzer
  • Debouncing and logical state detection with buttons
  • Real-world application of conditional logic
  • Hands-on practice with TinkerCAD and Arduino IDE

📈 Future Improvements

  • Add password-protected access to the result button
  • Implement EEPROM to store votes after power loss
  • Replace buttons with capacitive touch sensors
  • Add SD card logging for audit trail

🧑‍💻 Try It Yourself!

🔗 GitHub: namit-seth/EVM-V2
🔗 TinkerCAD: EVM V2 Simulation

Feel free to fork the project and add your own creative twist!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages