Electronic Voting Machine na may Module ng SD Card

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito magtatayo kami ng isang circuit para sa isang Electronic Voting Machine gamit ang Arduino at SD card module kung saan nakaimbak ang data ng halalan sa SD card.

Ni



I-UPDATE:

Ang circuit na ito ay na-upgrade sa isang pinabuting bersyon kung saan ang mga resulta ay maaaring makita sa isang nakalakip na LCD display, maaari mong makuha ang mga detalye sa ibabang seksyon ng post

Paggamit ng 16x2 LCD Dislay

Ipinapakita ng isang 16 x 2 display ang katayuan ng voting machine at kapag bumoto ka, ipapakita ang pangalan ng kandidato kasama ang pag-aktibo ng LED at buzzer.



Tandaan: Ang iminungkahing proyekto ay ginawa para sa hangaring pang-edukasyon lamang at hindi inilaan para sa totoong paggamit ng halalan.

Ipinapatupad ang mga electronic voting machine para sa pagpapabilis ng proseso ng halalan at bawasan ang paggamit ng papel at ang mga kadahilanang ito ay hindi direktang bawasan ang mga gastos na nauugnay sa halalan.

Ang mga electronic voting machine ay nagbibigay ng higit na seguridad bago ang tradisyunal na pamamaraan ng ballot ng papel.

Mapanganib ang pagdadala ng maramihang mga kahon ng balota kaysa sa paghahatid ng mga compact machine, kung saan ang mga pandaraya sa pagkuha ng sasakyan ay hindi maaaring baguhin ang data sa EVM (Electronic voting Machine) kahit na may makakakuha ng sasakyan.

Ang ilang mga bansa ay nagpapakita ng interes sa mga ginawang EVM ng India dahil sa higit na seguridad. Ang mga bansa tulad ng US ay nananatili pa rin sa tradisyunal na pamamaraan ng pagboto ng papel para sa kanilang halalan dahil sa mas mataas na peligro ng pag-hack at pagbabago ng data ng halalan.

Kaya, ano ang ginawang mas ligtas ng mga Indian sa mga EVM? Kaya, ginawa ng US ang mga machine sa pagboto na puno ng windows operating system at na-network sa mga server upang gawing madali ang bilang ng boto. Nagbubukas ito ng maraming mga butas para sa mga hacker upang baguhin ang data ng halalan.

Ang mga ginawang EVM ng India ay mga nakapag-iisang aparato at hindi konektado sa internet o mga server. Para sa pagbibilang ng mga boto ang mga makina ay dinala sa pagbibilang ng booth, kung saan ang mga resulta ay idedeklara at walang gitnang tao.

Ang iminungkahing proyekto ay dinisenyo na may katulad na pag-andar ng mga Indian EVM ngunit, maraming mga nagawa na pagbabago.

Lumipat tayo ngayon sa mga detalye sa konstruksyon ng proyekto.

Layout ng Circuit:

EVM Layout Diagram

Ang ipinanukalang EVM circuit ay makakatanggap lamang ng 6 na kandidato. Ang isang pindutan ng kontrol ay ibinigay na katulad ng control unit sa totoong mga EVM. Matapos ang isang tao ay mag-cast ng kanyang boto, hindi pinagana ang mga pindutan ng balota.

Ang mga pindutan ng balota ay pinagana lamang muli pagkatapos ng pagpindot sa pindutan ng kontrol. Ang control button ay mailalagay malapit sa taong namamahala na kumokontrol sa booth ng halalan.

Matapos ang isang tao ay bumoto siya ay kinilala sa pagsasaaktibo ng LED at buzzer. Maaari ding kumpirmahin ng tao ang boto kung kanino niya ipinakita sa display, ipapakita nito ang pangalan ng kandidato o ang pangalan ng partido sa loob ng ilang segundo. Ang tampok na ito ay hindi pa rin naroroon sa totoong mga EVM.

Diagram ng Skematika:

Ipinapakita ng Arduino ang pagkakakonekta:




Arduino EVM circuit para sa pagpapakita ng pagkakakonekta

Ang circuit ay nahahati sa dalawang bahagi upang maiwasan ang pagkalito habang dinoble ang proyekto. Inilalarawan ng circuit sa itaas ang mga kable sa pagitan ng LCD display at arduino. Ayusin ang variable risistor para sa pinakamainam na pagkakaiba.

Elektronikong Voting Machine Circuit na may SD Card Module at Arduino

Narito ang natitirang circuit na binubuo ng 9V baterya, switch, pitong push button, LED, buzzer at mas mahalaga ang module ng SD card.

Ang SD card ay mag-iimbak ng data kaagad pagkatapos na ibigay ang isang boto. Kapag natapos na ang halalan ang SD card ay ipinasok sa isang computer upang ideklara ang bilang ng resulta at ang resulta.

Ang Panukalang disenyo ay maaaring magtala ng hanggang sa 4,294,967,295 (na higit sa 4 bilyon) na boto bawat kandidato at 25,769,803,770 (higit sa 25 bilyon na higit pa sa tatlong beses na populasyon ng kasalukuyang mundo) na mga boto bawat makina at higit pa sa 99.9% SD card ay wala pa ring laman .

Ito ay mas mahusay kaysa sa totoong mga EVM na maaaring magtala ng 3840 na boto bawat machine.

Programa:

//--------Program Developed by R.Girish------//
#include
#include
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2)
//----------------------------------------------------//
String Party1 = 'MODI'
String Party2 = 'TRUMP'
String Party3 = 'PUTIN' // Place the Candidate Names Here.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
//-----------------------------------------------------//
const int btn_1 = A0
const int btn_2 = A1
const int btn_3 = A2
const int btn_4 = A3
const int btn_5 = A4
const int btn_6 = A5
const int ctrl_btn = 8
const int cs = 10
const int LED = 9
boolean ballot = false
File Party1File
File Party2File
File Party3File
File Party4File
File Party5File
File Party6File
unsigned long int Party1_Count = 0
unsigned long int Party2_Count = 0
unsigned long int Party3_Count = 0
unsigned long int Party4_Count = 0
unsigned long int Party5_Count = 0
unsigned long int Party6_Count = 0
void setup()
{
pinMode(btn_1,INPUT)
pinMode(btn_2,INPUT)
pinMode(btn_3,INPUT)
pinMode(btn_4,INPUT)
pinMode(btn_5,INPUT)
pinMode(btn_6,INPUT)
pinMode(ctrl_btn,INPUT)
pinMode(cs,OUTPUT)
pinMode(LED,OUTPUT)
digitalWrite(btn_1,HIGH)
digitalWrite(btn_2,HIGH)
digitalWrite(btn_3,HIGH)
digitalWrite(btn_4,HIGH)
digitalWrite(btn_5,HIGH)
digitalWrite(btn_6,HIGH)
digitalWrite(ctrl_btn,HIGH)
lcd.begin(16,2)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' Electronic')
lcd.setCursor(0,1)
lcd.print(' Voting Machine')
delay(2000)
if (!SD.begin(cs))
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('SD Card failed')
lcd.setCursor(0,1)
lcd.print('or not present')
while(true)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Machine Status:')
lcd.setCursor(0,1)
lcd.print('Initialized !!!')
digitalWrite(LED,HIGH)
delay(2000)
digitalWrite(LED,LOW)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Machine is ready')
lcd.setCursor(0,1)
lcd.print('----------------')
while(!ballot)
{
if(digitalRead(ctrl_btn) == LOW)
{
ballot = true
for(int y = 0 y <3 y++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Cast Your Vote')
lcd.setCursor(0,1)
lcd.print('----------------')
}
}
}
void loop()
{
while(ballot)
{
if(digitalRead(btn_1) == LOW)
{
Party_1()
}
if(digitalRead(btn_2) == LOW)
{
Party_2()
}
if(digitalRead(btn_3) == LOW)
{
Party_3()
}
if(digitalRead(btn_4) == LOW)
{
Party_4()
}
if(digitalRead(btn_5) == LOW)
{
Party_5()
}
if(digitalRead(btn_6) == LOW)
{
Party_6()
}
}
}
void Party_1()
{
ballot = false
SD.remove('Party1.txt')
Party1File = SD.open('Party1.txt', FILE_WRITE)
if(Party1File)
{
Party1_Count = Party1_Count + 1
lcd.clear()
lcd.setCursor(0,0)
lcd.print('You voted for:')
lcd.setCursor(0,1)
lcd.print(Party1)
Party1File.println('------------------------------------')
Party1File.print('Result for: ')
Party1File.println(Party1)
Party1File.print('------------------------------------')
Party1File.println(' ')
Party1File.print('Number of Votes = ')
Party1File.print(Party1_Count)
Party1File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_2()
{
ballot = false
SD.remove('Party2.txt')
Party2File = SD.open('Party2.txt', FILE_WRITE)
if(Party2File)
{
Party2_Count = Party2_Count + 1
lcd.clear()
lcd.setCursor(0,0)
lcd.print('You voted for:')
lcd.setCursor(0,1)
lcd.print(Party2)
Party2File.println('------------------------------------')
Party2File.print('Result for: ')
Party2File.println(Party2)
Party2File.print('------------------------------------')
Party2File.println(' ')
Party2File.print('Number of Votes = ')
Party2File.print(Party2_Count)
Party2File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_3()
{
ballot = false
SD.remove('Party3.txt')
Party3File = SD.open('Party3.txt', FILE_WRITE)
if(Party3File)
{
Party3_Count = Party3_Count + 1
lcd.clear()
lcd.setCursor(0,0)
lcd.print('You voted for:')
lcd.setCursor(0,1)
lcd.print(Party3)
Party3File.println('------------------------------------')
Party3File.print('Result for: ')
Party3File.println(Party3)
Party3File.print('------------------------------------')
Party3File.println(' ')
Party3File.print('Number of Votes = ')
Party3File.print(Party3_Count)
Party3File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_4()
{
ballot = false
SD.remove('Party4.txt')
Party4File = SD.open('Party4.txt', FILE_WRITE)
if(Party4File)
{
Party4_Count = Party4_Count + 1
lcd.clear()
lcd.setCursor(0,0)
lcd.print('You voted for:')
lcd.setCursor(0,1)
lcd.print(Party4)
Party4File.println('------------------------------------')
Party4File.print('Result for: ')
Party4File.println(Party4)
Party4File.print('------------------------------------')
Party4File.println(' ')
Party4File.print('Number of Votes = ')
Party4File.print(Party4_Count)
Party4File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_5()
{
ballot = false
SD.remove('Party5.txt')
Party5File = SD.open('Party5.txt', FILE_WRITE)
if(Party5File)
{
Party5_Count = Party5_Count + 1
lcd.clear()
lcd.setCursor(0,0)
lcd.print('You voted for:')
lcd.setCursor(0,1)
lcd.print(Party5)
Party5File.println('------------------------------------')
Party5File.print('Result for: ')
Party5File.println(Party5)
Party5File.print('------------------------------------')
Party5File.println(' ')
Party5File.print('Number of Votes = ')
Party5File.print(Party5_Count)
Party5File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_6()
{
ballot = false
SD.remove('Party6.txt')
Party6File = SD.open('Party6.txt', FILE_WRITE)
if(Party6File)
{
Party6_Count = Party6_Count + 1
lcd.clear()
lcd.setCursor(0,0)
lcd.print('You voted for:')
lcd.setCursor(0,1)
lcd.print(Party6)
Party6File.println('------------------------------------')
Party6File.print('Result for: ')
Party6File.println(Party6)
Party6File.print('------------------------------------')
Party6File.println(' ')
Party6File.print('Number of Votes = ')
Party6File.print(Party6_Count)
Party6File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Error()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Unable to log')
lcd.setCursor(0,1)
lcd.print('data to SD card')
for(int x = 0 x <100 x++)
{
digitalWrite(LED, HIGH)
delay(250)
digitalWrite(LED, LOW)
delay(250)
}
}
void Tone()
{
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
delay(1500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' Thanks for')
lcd.setCursor(0,1)
lcd.print(' Voting!!!')
delay(1500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' Not Ready')
lcd.setCursor(0,1)
lcd.print('----------------')
}
void ctrl()
{
while(!ballot)
{
if(digitalRead(ctrl_btn) == LOW)
{
ballot = true
for(int y = 0 y <3 y++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Cast Your Vote')
lcd.setCursor(0,1)
lcd.print('----------------')
}
}
}
//--------Program Developed by R.Girish------//

……… Iyon ay isang napakalaking programa.

Paano patakbuhin ang EVM Circuit na ito:

• I-ON ang makina, kikilalanin nito nang may beep na nagpapahiwatig na maayos ang lahat. Kung ang makina ay hindi maayos, mabilis itong pumupog at ipinapakita ang mensahe ng error sa LCD.
• Pindutin ang control button, handa na itong mag-record ng isang boto.
• Kapag naitala ang boto ay buhayin ang LED at beep para sa isang segundo at ipapakita ang pangalan ng kandidato kung kanino ka bumoto para sa ilang segundo.
• Upang maitala ang susunod na pagboto ang pindutan ng kontrol ay kailangang pindutin muli. Sa tuwing pinipindot ang control button, nagbibigay ang buzzer ng 3 maikling beep.
• Ito ay dapat na ipagpatuloy hanggang sa huling botante ay bumoto. Hindi na kailangang pindutin ang control button pagkatapos ng huling botante na iboto ang boto.
• Matapos maihagis ang huling boto, dapat patayin kaagad ang makina gamit ang off switch at dapat alisin ang SD card. Upang walang data na mabago.
• I-plug ang SD card sa isang computer at maaari mong makita ang 6 na mga file ng teksto tulad ng ipinakita sa ibaba:

Ang resulta ng SD card ay nakaimbak sa computer

Ang pagbubukas ng isang file ay magpapakita ng pangalan ng kandidato at bilang ng boto, tulad ng nakalarawan sa ibaba:

Prototype ng may-akda:

Paglalarawan ng Module ng SD card:

Tandaan 1: Ang anumang pagkagambala sa supply ng kuryente ay magre-reset ng bilang ng boto sa zero.
Tandaan 2: Mangyaring palitan ang pangalan ng kandidato sa programa.
String Party1 = 'MODI'
String Party2 = 'TRUMP'
String Party3 = 'PUTIN' // Ilagay ang Mga Pangalan ng Kandidato Dito.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
Tandaan 3: Kung walang pagboto sa isang partikular na partido / kandidato ang file ng teksto ay hindi lilitaw sa SD card.

Pag-a-upgrade sa Disenyo sa Itaas

Ang partikular na na-upgrade na bersyon ng proyekto ng elektronikong makina ng pagboto ay hiniling ni Sumesh chourasia, na isang masugid na mambabasa ng website na ito.

Ang proyektong ito ay isang pagpapabuti sa paglipas ng Electronic Voting Machine na ipinaliwanag sa itaas. Ang pangunahing sagabal sa itaas ng EVM (Electronic Voting Machine) ay ang resulta ay hindi maaaring matingnan sa 16 x 2 LCD display, ngunit maaari lamang itong makita sa computer.

Sa proyektong ito ay kukunin namin ang nabanggit na pagbawi at sa bagong iminungkahing disenyo maaari naming matingnan ang resulta ng 6 na kandidato sa LCD display kaagad.

Mga kahirapan na nakasalamuha namin:

Ang lahat ng mga input / output pin (ng Arduino) ng nakaraang proyekto ng EVM ay ginamit ng display na 16 x 2, module ng SD card, mga pindutan ng balota, pindutan ng kontrol at buzzer. Wala nang natitirang silid para sa pagkonekta ng anumang bagong pindutan.

Matapos ang ilang pananaliksik natagpuan namin na ang anumang mga I / O pin ay maaaring mabago sa output sa input at kabaligtaran sa anumang punto.

Pagkatapos ng maingat na pagmamasid pinili namin ang LED / buzzer pin bilang save button. Ngayon ang pin na ito ay na-program bilang parehong input (save button) at output (buzzer).

Tandaan na ang save / buzzer pin ay nakatalaga sa anumang isa sa mga estado sa isang instant ibig sabihin output o input.

Ang circuit:

Koneksyon sa LCD sa Arduino:

Ikonekta lamang ayon sa mas naunang mga iskematika at gumamit ng 10K potentiometer para sa pag-aayos ng pagtingin sa kaibahan na natitirang circuit ay nagpapaliwanag sa sarili.

Ang S1 hanggang S6 ay mga pindutan ng balota kung saan ang mga botante ay nag-input ng kanilang napili. Ang i-save at control button ay dapat itago ang layo mula sa ballot unit (nasa ilalim ng kontrol ng in-charge na poll booth).

Bagong Programa:
//--------Program Developed by R.Girish------//
#include
#include
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2)
//----------------------------------------------------//
String Party1 = 'MODI'
String Party2 = 'TRUMP'
String Party3 = 'PUTIN' // Place the Candidate Names Here.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
//-----------------------------------------------------//
const int btn_1 = A0
const int btn_2 = A1
const int btn_3 = A2
const int btn_4 = A3
const int btn_5 = A4
const int btn_6 = A5
const int ctrl_btn = 8
const int cs = 10
int LED = 9
int saveTest = 0
int A = 0
int B = 0
int C = 0
int D = 0
int E = 0
int F = 0
boolean ballot = false
File Party1File
File Party2File
File Party3File
File Party4File
File Party5File
File Party6File
File save
unsigned long int Party1_Count = 0
unsigned long int Party2_Count = 0
unsigned long int Party3_Count = 0
unsigned long int Party4_Count = 0
unsigned long int Party5_Count = 0
unsigned long int Party6_Count = 0
void setup()
{
pinMode(btn_1, INPUT)
pinMode(btn_2, INPUT)
pinMode(btn_3, INPUT)
pinMode(btn_4, INPUT)
pinMode(btn_5, INPUT)
pinMode(btn_6, INPUT)
pinMode(ctrl_btn, INPUT)
pinMode(cs, OUTPUT)
pinMode(LED, OUTPUT)
digitalWrite(btn_1, HIGH)
digitalWrite(btn_2, HIGH)
digitalWrite(btn_3, HIGH)
digitalWrite(btn_4, HIGH)
digitalWrite(btn_5, HIGH)
digitalWrite(btn_6, HIGH)
digitalWrite(ctrl_btn, HIGH)
lcd.begin(16, 2)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F(' Electronic'))
lcd.setCursor(0, 1)
lcd.print(F(' Voting Machine'))
delay(2000)
if (!SD.begin(cs))
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('SD Card failed'))
lcd.setCursor(0, 1)
lcd.print('or not present')
while (true)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
}
if (SD.exists('save.txt'))
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Opening Results'))
lcd.setCursor(0, 1)
lcd.print(F('----------------'))
delay(1500)
DisplayResult()
}
else
{
Party1File = SD.open('Party1.txt', FILE_WRITE)
if (Party1File)
{
Party1File.println('--------Null-------')
Party1File.close()
}
else
{
Error()
}
Party2File = SD.open('Party2.txt', FILE_WRITE)
if (Party2File)
{
Party2File.println('--------Null-------')
Party2File.close()
}
else
{
Error()
}
Party3File = SD.open('Party3.txt', FILE_WRITE)
if (Party3File)
{
Party3File.println('--------Null-------')
Party3File.close()
}
else
{
Error()
}
Party4File = SD.open('Party4.txt', FILE_WRITE)
if (Party4File)
{
Party4File.println('--------Null-------')
Party4File.close()
}
else
{
Error()
}
Party5File = SD.open('Party5.txt', FILE_WRITE)
if (Party5File)
{
Party5File.println('--------Null-------')
Party5File.close()
}
else
{
Error()
}
Party6File = SD.open('Party6.txt', FILE_WRITE)
if (Party6File)
{
Party6File.println('--------Null-------')
Party6File.close()
}
else
{
Error()
}
}
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Machine Status:'))
lcd.setCursor(0, 1)
lcd.print(F('Initialized !!!'))
digitalWrite(LED, HIGH)
delay(2000)
digitalWrite(LED, LOW)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Machine is ready'))
lcd.setCursor(0, 1)
lcd.print(F('----------------'))
while (!ballot)
{
if (digitalRead(ctrl_btn) == LOW)
{
ballot = true
for (int y = 0 y <3 y++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Cast Your Vote'))
lcd.setCursor(0, 1)
lcd.print(F('----------------'))
}
}
}
void loop()
{
pinMode(LED, INPUT)
if (digitalRead(LED) == HIGH)
{
save = SD.open('save.txt', FILE_WRITE)
if (save)
{
save.println('Results File')
save.close()
}
else
{
Error()
}
}
if (SD.exists('save.txt'))
{
while (true)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Results Saved'))
lcd.setCursor(0, 1)
lcd.print(F('Successfully.'))
delay(1500)
lcd.setCursor(0, 0)
lcd.print(F('Disconnect the'))
lcd.setCursor(0, 1)
lcd.print(F('Power Supply'))
delay(1500)
}
}
if (digitalRead(btn_1) == LOW)
{
Party_1()
}
if (digitalRead(btn_2) == LOW)
{
Party_2()
}
if (digitalRead(btn_3) == LOW)
{
Party_3()
}
if (digitalRead(btn_4) == LOW)
{
Party_4()
}
if (digitalRead(btn_5) == LOW)
{
Party_5()
}
if (digitalRead(btn_6) == LOW)
{
Party_6()
}
}
void Party_1()
{
ballot = false
SD.remove('Party1.txt')
Party1File = SD.open('Party1.txt', FILE_WRITE)
if (Party1File)
{
Party1_Count = Party1_Count + 1
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('You voted for:'))
lcd.setCursor(0, 1)
lcd.print(Party1)
Party1File.print(Party1_Count)
Party1File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_2()
{
ballot = false
SD.remove('Party2.txt')
Party2File = SD.open('Party2.txt', FILE_WRITE)
if (Party2File)
{
Party2_Count = Party2_Count + 1
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('You voted for:'))
lcd.setCursor(0, 1)
lcd.print(Party2)
Party2File.print(Party2_Count)
Party2File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_3()
{
ballot = false
SD.remove('Party3.txt')
Party3File = SD.open('Party3.txt', FILE_WRITE)
if (Party3File)
{
Party3_Count = Party3_Count + 1
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('You voted for:'))
lcd.setCursor(0, 1)
lcd.print(Party3)
Party3File.print(Party3_Count)
Party3File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_4()
{
ballot = false
SD.remove('Party4.txt')
Party4File = SD.open('Party4.txt', FILE_WRITE)
if (Party4File)
{
Party4_Count = Party4_Count + 1
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('You voted for:'))
lcd.setCursor(0, 1)
lcd.print(Party4)
Party4File.print(Party4_Count)
Party4File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_5()
{
ballot = false
SD.remove('Party5.txt')
Party5File = SD.open('Party5.txt', FILE_WRITE)
if (Party5File)
{
Party5_Count = Party5_Count + 1
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('You voted for:'))
lcd.setCursor(0, 1)
lcd.print(Party5)
Party5File.print(Party5_Count)
Party5File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Party_6()
{
ballot = false
SD.remove('Party6.txt')
Party6File = SD.open('Party6.txt', FILE_WRITE)
if (Party6File)
{
Party6_Count = Party6_Count + 1
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('You voted for:'))
lcd.setCursor(0, 1)
lcd.print(Party6)
Party6File.print(Party6_Count)
Party6File.close()
Tone()
ctrl()
}
else
{
Error()
}
}
void Error()
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Unable to log'))
lcd.setCursor(0, 1)
lcd.print(F('data to SD card'))
for (int x = 0 x <100 x++)
{
digitalWrite(LED, HIGH)
delay(250)
digitalWrite(LED, LOW)
delay(250)
}
}
void Tone()
{
pinMode(LED, OUTPUT)
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
delay(1500)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F(' Thanks for'))
lcd.setCursor(0, 1)
lcd.print(F(' Voting!!!'))
delay(1500)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F(' Not Ready'))
lcd.setCursor(0, 1)
lcd.print('----------------')
}
void ctrl()
{
while (!ballot)
{
pinMode(LED, INPUT)
if (digitalRead(LED) == HIGH)
{
save = SD.open('save.txt', FILE_WRITE)
if (save)
{
save.println('Results File')
save.close()
}
else
{
Error()
}
}
if (SD.exists('save.txt'))
{
while (true)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Results Saved'))
lcd.setCursor(0, 1)
lcd.print(F('Successfully.'))
delay(1500)
lcd.setCursor(0, 0)
lcd.print(F('Disconnect the'))
lcd.setCursor(0, 1)
lcd.print(F('Power Supply'))
delay(1500)
}
}
if (digitalRead(ctrl_btn) == LOW)
{
ballot = true
for (int y = 0 y <3 y++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('Cast Your Vote'))
lcd.setCursor(0, 1)
lcd.print(F('----------------'))
}
}
}
void DisplayResult()
{
while (true)
{
Party1File = SD.open('party1.txt')
if(Party1File)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Party1)
while (Party1File.available())
{
lcd.setCursor(A, 1)
lcd.write(Party1File.read())
A = A + 1
}
}
A = 0
delay(2000)
Party1File.close()
Party2File = SD.open('party2.txt')
if(Party2File)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Party2)
while (Party2File.available())
{
lcd.setCursor(B, 1)
lcd.write(Party2File.read())
B = B + 1
}
}
B = 0
delay(2000)
Party2File.close()
Party3File = SD.open('party3.txt')
if(Party3File)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Party3)
while (Party3File.available())
{
lcd.setCursor(C, 1)
lcd.write(Party3File.read())
C = C + 1
}
}
C = 0
delay(2000)
Party3File.close()
Party4File = SD.open('party4.txt')
if(Party4File)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Party4)
while (Party4File.available())
{
lcd.setCursor(D, 1)
lcd.write(Party4File.read())
D = D + 1
}
}
D = 0
delay(2000)
Party4File.close()
Party5File = SD.open('party5.txt')
if(Party5File)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Party5)
while (Party5File.available())
{
lcd.setCursor(E, 1)
lcd.write(Party5File.read())
E = E + 1
}
}
E = 0
delay(2000)
Party5File.close()
Party6File = SD.open('party6.txt')
if(Party6File)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Party6)
while (Party6File.available())
{
lcd.setCursor(F, 1)
lcd.write(Party6File.read())
F = F + 1
}
}
F = 0
delay(2000)
Party6File.close()
}
}
//--------Program Developed by R.Girish------//

Paano patakbuhin ang Electronic voting machine na ito:

  • Sa nakumpleto na pag-setup ng hardware i-upload ang code sa iyong mga pangalan ng kandidato ng pagnanais.
  • I-on ang makina, kung maayos ang lahat magbibigay ito ng isang mahabang beep.
  • Ngayon pindutin ang pindutan ng kontrol at ngayon ay maaari itong magtala ng isang solong boto.
  • Pagkatapos ng bawat pagboto ang control button ay dapat na pinindot nang isang beses.
  • Kapag na-cast na ang huling boto, pindutin ang save button na ito ay makakatipid ng mga resulta at mag-udyok sa iyo na idiskonekta ang power supply (upang makita mo ang mga resulta nang pribado).
  • Muling ikonekta ang supply ay awtomatiko itong magsisimulang ipakita ang mga resulta. Kung ang isang kandidato ay hindi nakakuha ng anumang boto ay nagpapakita ito ng 'null'.
  • Upang magsagawa ng isa pang halalan, kailangan mong i-format ang SD card / tanggalin ang lahat ng mga file na nabuo ng EVM na ito.

Mangyaring tandaan na ang EVM na ito ay nangangailangan ng tuluy-tuloy na lakas, ang anumang pagkagambala ay igagulong ang bilang ng boto sa zero.

Mangyaring isulat ang mga pangalan ng kandidato sa code (maximum na 16 titik):

// ----------------- ---- //

String Party1 = 'MODI'

String Party2 = 'TRUMP'

String Party3 = 'PUTIN' // Ilagay ang Mga Pangalan ng Kandidato Dito.

String Party4 = 'Abdul Kalam'

String Party5 = 'Girish'

String Party6 = 'Swagatam'

// ----------------- ----- //

Tinapos nito ang proyekto, kung mayroon kang anumang mga katanungan tungkol sa proyektong ito huwag mag-atubiling ipahayag sa seksyon ng komento, maaari kang makatanggap ng mabilis na tugon.




Nakaraan: Car Tank Water Sensor Circuit Susunod: 3 Solid-State Single IC 220V Adjustable Power Supply Circuits