本篇文章我們主要介紹如何使用Arduino開(kāi)發(fā)板制作一款簡(jiǎn)單的智能電子投票機(jī)。該項(xiàng)目的基本思想是制作一種電子投票機(jī),這將有助于消除人工投票系統(tǒng)和之前電子投票系統(tǒng)的欺詐行為。
該系統(tǒng)具有n個(gè)按鍵,其中n是政黨數(shù)量。在這里,投票人將被允許繼續(xù)從按鈕面板中選擇他們的首選候選人。然后將最終投票結(jié)果顯示在LCD上,以使選民滿意。最后,可以通過(guò)按結(jié)果按鈕自動(dòng)計(jì)算結(jié)果。
所需的組件
● Arduino UNO開(kāi)發(fā)板
● 1602 LCD顯示屏
● 4個(gè)按鍵
● 10K電位器
● 連接線
● 面包板
功能框圖
在本文中,我們?yōu)閰⒓舆x舉的四個(gè)不同候選人使用了??四個(gè)按鈕。我們可以根據(jù)要求增加候選人的數(shù)量。當(dāng)任何投票者按下四個(gè)按鈕中的任何一個(gè)時(shí),被投票值將每次增加一。在整個(gè)投票過(guò)程之后,可以按下結(jié)果按鈕以顯示結(jié)果。
電路原理圖
如上圖所示組裝電路。將5個(gè)按鈕分別連接到Arduino的數(shù)字引腳7、6、5、4、3。同樣,將LCD的引腳4、6、11、12、13、14連接到Arduino的數(shù)字引腳13、12、11、10、9、8。
項(xiàng)目的工作過(guò)程
在該項(xiàng)目中,Arduino是該系統(tǒng)的心臟和大腦。 Arduino控制著完整的投票過(guò)程,例如讀取按鈕、增加投票值、生成結(jié)果以及將投票和結(jié)果發(fā)送到LCD顯示屏。
在這里,我們添加了五個(gè)按鈕,分別代表團(tuán)隊(duì)A、團(tuán)隊(duì)B、團(tuán)隊(duì)C、團(tuán)隊(duì)D,最后一個(gè)按鈕用于計(jì)算并顯示結(jié)果。
下面是該項(xiàng)目的一些圖片,這些圖片清楚地說(shuō)明了該項(xiàng)目的工作情況。
實(shí)現(xiàn)代碼
#include
Liqu
idCrystal lcd(13, 12, 11, 10, 9, 8);
#define S1 7
#define S2 6
#define S3 5
#define S4 4
#define S5 3
int vote1=0;
int vote2=0;
int vote3=0;
int vote4=0;
void setup()
{
pinMode(S2,INPUT);
pinMode(S3,INPUT);
pinMode(S4,INPUT);
pinMode(S5,INPUT);
lcd.begin(16, 2);
lcd.print(" Electron
ic ");
lcd.print(" Voting Machine ");
delay(4000);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
digitalWrite(S4, HIGH);
digitalWrite(S5, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("A");
lcd.setCursor(5,0);
lcd.print("B");
lcd.setCursor(9,0);
lcd.print("C");
lcd.setCursor(13,0);
lcd.print("D");
}
void loop()
{
lcd.setCursor(1,0);
lcd.print("A");
lcd.setCursor(1,1);
lcd.print(vote1);
lcd.setCursor(5,0);
lcd.print("B");
lcd.setCursor(5,1);
lcd.print(vote2);
lcd.setCursor(9,0);
lcd.print("C");
lcd.setCursor(9,1);
lcd.print(vote3);
lcd.setCursor(13,0);
lcd.print("D");
lcd.setCursor(13,1);
lcd.print(vote4);
vote1++;
while(digitalRead(S1)==0);
if(digitalRead(S2)==0)
vote2++;
while(digitalRead(S2)==0);
if(digitalRead(S3)==0)
vote3++;
while(digitalRead(S3)==0);
if(digitalRead(S4)==0)
vote4++;
while(digitalRead(S4)==0);
if(digitalRead(S5)==0)
{
int vote=vote1+vote2+vote3+vote4;
if(vote)
{
if((vote1 > vote2 && vote1 > vote3 && vote1 > vote4))
{
lcd.clear();
lcd.print("A is Winner");
delay(3000);
lcd.clear();
}
else if((vote2 > vote1 && vote2 > vote3 && vote2 > vote4))
{
lcd.clear();
lcd.print("B is Winner");
delay(3000);
lcd.clear();
}
else if((vote3 > vote1 && vote3 > vote2 && vote3 > vote4))
{
lcd.clear();
lcd.print("C is Winner");
delay(3000);
lcd.clear();
}
else if(vote4 > vote1 && vote4 > vote2 && vote4 > vote3)
{
lcd.setCursor(0,0);
lcd.clear();
lcd.print("D is Winner");
delay(3000);
lcd.clear();
}
else if(vote4 > vote1 && vote4 > vote2 && vote4 > vote3)
{
lcd.setCursor(0,0);
lcd.clear();
lcd.print("D is Winner");
delay(3000);
lcd.clear();
}
else
{
lcd.clear();
lcd.print("
Tie Up Or ");
lcd.setCursor(0,1);
lcd.print(" No Result ");
delay(3000);
lcd.clear();
}
}
else
{
lcd.clear();
lcd.print("No Voting....");
delay(3000);
lcd.clear();
}
vote1=0;vote2=0;vote3=0;vote4=0,vote=0;
lcd.clear();
}
}
編輯:hfy
評(píng)論