Elektroniskā balsošanas mašīna ar SD kartes moduli

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņojumā mēs izveidosim shēmu elektroniskajai balsošanas mašīnai, izmantojot Arduino un SD karšu moduli, kur vēlēšanu dati tiek glabāti SD kartē.

Autors



ATJAUNINĀT:

Šī shēma ir modernizēta uz uzlabotu versiju, kurā rezultātus var apskatīt, izmantojot pievienoto LCD displeju. Sīkāku informāciju varat iegūt ziņas apakšdaļā.

Izmantojot 16x2 LCD displeju

16 x 2 displejā tiek parādīts balsošanas iekārtas statuss, un, nododot balsi, tiks parādīts kandidāta vārds, kā arī aktivizēta LED un skaņas signāls.



Piezīme. Ierosinātais projekts ir paredzēts tikai izglītības vajadzībām un nav paredzēts reālai vēlēšanu lietošanai.

Elektroniskās balsošanas iekārtas tiek ieviestas, lai paātrinātu vēlēšanu procesu un samazinātu lietošanas papīru, un šie iemesli netieši samazina ar vēlēšanām saistītos izdevumus.

Elektroniskās balsošanas iekārtas nodrošina izcilu drošību pirms tradicionālās papīra vēlēšanu metodes.

Pārvadāt šīs lielapjoma vēlēšanu kastes ir riskanti nekā pārvadāt kompaktas mašīnas, kur krāpšanās ar transportlīdzekļu uztveršanu nevar mainīt EVM (elektroniskās balsošanas mašīnas) datus, lai arī tas spēj notvert transportlīdzekli.

Dažas valstis augstākas drošības dēļ izrāda interesi par Indijas ražotajiem EVM. Tādas valstis kā ASV vēlēšanās joprojām ievēro tradicionālo papīra vēlēšanu metodi, jo pastāv lielāks uzlaušanas un vēlēšanu datu mainīšanas risks.

Tātad, kas padarīja indieti padarīja EVM drošāku? Labi, ASV izgatavoja balsošanas mašīnas, kas bija ielādētas ar Windows operētājsistēmu un savienotas ar serveriem, lai balsu skaitīšana būtu vienkārša. Tas paver hakeriem daudz nepilnību, lai mainītu vēlēšanu datus.

Indijas ražotās EVM ir atsevišķas ierīces un nav savienotas ar internetu vai serveriem. Balsu skaitīšanai mašīnas tiek nogādātas balsu skaitīšanas kabīnē, kur tiks paziņoti rezultāti un nav neviena vidusmēra cilvēka.

Ierosinātais projekts ir izstrādāts ar līdzīgu Indijas EVM funkcionalitāti, taču ir veiktas daudzas modifikācijas.

Tagad pāriesim pie projekta konstrukcijas detaļām.

Ķēdes izkārtojums:

EVM izkārtojuma diagramma

Piedāvātajā EVM shēmā var uzņemt tikai 6 kandidātus. Vadības poga ir paredzēta līdzīgi kā vadības bloks reālos EVM. Pēc tam, kad kāda persona ir nodevusi savu balsi, vēlēšanu pogas tiek atspējotas.

Vēlēšanu pogas atkal tiek iespējotas tikai pēc vadības pogas nospiešanas. Vadības poga tiks novietota netālu no atbildīgās personas, kura kontrolē vēlēšanu kabīni.

Pēc tam, kad kāda persona ir nobalsojusi, viņu / viņu apstiprina ar LED un skaņas signāla aktivizēšanu. Persona var arī apstiprināt displejā nodoto balsi, uz kuras pāris sekundes būs redzams kandidāta vārds vai partijas nosaukums. Šī funkcija joprojām nav reālos EVM.

Shematiska diagramma:

Arduino, kas parāda savienojamību:




Arduino EVM shēma savienojamības attēlošanai

Ķēde ir sadalīta divās daļās, lai izvairītos no neskaidrībām, vienlaikus dublējot projektu. Iepriekš minētā shēma apraksta elektroinstalāciju starp LCD displeju un arduino. Pielāgojiet mainīgo rezistoru optimālam kontrastam.

Elektroniskā vēlēšanu automāta shēma ar SD kartes moduli un Arduino

Šeit ir pārējā ķēde, kas sastāv no 9 V akumulatora, slēdža, septiņām spiedpogām, LED, skaņas signāla un vēl svarīgāk SD kartes moduļa.

SD kartē dati tiks glabāti uzreiz pēc balsojuma nodošanas. Kad vēlēšanas ir beigušās, SD karte tiek ievietota datorā, lai deklarētu balsu skaitu un rezultātu.

Piedāvātais dizains var ierakstīt līdz 4 294 967 295 (kas ir vairāk nekā 4 miljardi) balsis vienam kandidātam un 25 769 803 770 (vairāk nekā 25 miljardi, kas ir vairāk nekā trīs reizes vairāk nekā pašreizējie pasaules iedzīvotāji) balsis par mašīnu, un joprojām vairāk nekā 99,9% SD karte joprojām ir tukša .

Tas ir daudz efektīvāk nekā reālie EVM, kas vienā mašīnā var ierakstīt 3840 balsis.

Programma:

//--------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------//

……… Tā ir liela programma.

Kā vadīt šo EVM shēmu:

• Ieslēdziet mašīnu, tā ar pīkstienu apstiprinās, ka viss ir kārtībā. Ja iekārta nav kārtībā, tā ātri pīkst un LCD displejā parāda kļūdas ziņojumu.
• Nospiediet vadības pogu, tagad tā ir gatava ierakstīt vienu balsi.
• Kad balsojums ir ierakstīts, tas aktivizēs LED un pīkstēs sekundi un parādīs tā kandidāta vārdu, kuram jūs balsojāt pāris sekundes.
• Lai ierakstītu nākamo balsojumu, vadības poga ir jānospiež vēlreiz. Katru reizi, kad tiek nospiesta vadības poga, skaņas signāls izdara 3 īsus pīkstienus.
• Tas jāturpina līdz brīdim, kad pēdējais vēlētājs atdeva savu balsi. Pēc pēdējā vēlētāja kastēšanas nav nepieciešams nospiest vadības pogu.
• Pēc pēdējās balss nodošanas iekārta nekavējoties jāizslēdz, izmantojot izslēgšanas slēdzi, un SD karte ir jānoņem. Lai dati netiktu mainīti.
• Pievienojiet SD karti datoram, un jūs varat redzēt 6 teksta failus, kā parādīts zemāk:

SD kartes rezultāts tiek saglabāts datorā

Atverot failu, tiks parādīts kandidāta vārds un balsu skaits, kā parādīts zemāk:

Autora prototips:

SD kartes moduļa ilustrācija:

1. piezīme. Jebkurš strāvas padeves pārtraukums atiestatīs balsu skaitu uz nulli.
2. piezīme. Lūdzu, nomainiet kandidāta vārdu programmā.
Stīgu puse1 = 'MODI'
Stīgu puse2 = 'TRUMP'
String Party3 = 'PUTIN' // Ievietojiet kandidātu vārdus šeit.
Stīgu partija4 = 'Abdul Kalam'
Stīgu puse5 = 'Girish'
Stīgu partija6 = 'Swagatam'
3. piezīme: Ja konkrētai partijai / kandidātam nav balss, teksta fails neparādīsies SD kartē.

Iepriekšminētā dizaina jaunināšana

Šo konkrēto modernizēto elektroniskās balsošanas iekārtas projekta versiju pieprasīja Sumeša chourasia, kas ir dedzīgs šīs vietnes lasītājs.

Šis projekts ir uzlabojums salīdzinājumā ar iepriekš paskaidroto elektronisko balsošanas mašīnu. Galvenais iepriekš minētā EVM (elektroniskās balsošanas automāta) trūkums bija tāds, ka rezultātu nevarēja redzēt 16 x 2 LCD displejā, bet to var apskatīt tikai datorā.

Šajā projektā mēs noraidīsim minēto atsaukšanu, un ar nesen piedāvāto dizainu mēs varam uzreiz redzēt 6 kandidātu rezultātus LCD displejā.

Grūtības, ar kurām mēs saskārāmies:

Visas iepriekšējā EVM projekta ievades / izvades tapas (no Arduino) izmantoja 16 x 2 displejs, SD kartes modulis, vēlēšanu pogas, vadības poga un skaņas signāls. Vairs nav vietas, lai pievienotu jaunu pogu.

Pēc dažiem pētījumiem mēs atklājām, ka jebkuru I / O tapu var mainīt uz izvadi uz ievadi un otrādi jebkurā brīdī.

Pēc rūpīgas novērošanas mēs izvēlējāmies LED / skaņas signāla tapu kā saglabāšanas pogu. Tagad šī tapa ir ieprogrammēta kā ievade (saglabāšanas poga) un izeja (skaņas signāls).

Ņemiet vērā, ka saglabāšanas / skaņas signāla tapa tiek piešķirta jebkurā stāvoklī vienā brīdī, t.i., izvadē vai ieejā.

Ķēde:

LCD savienojums ar Arduino:

Vienkārši pievienojiet, kā norādīts iepriekšējās shēmās, un izmantojiet 10K potenciometru, lai pielāgotu skatīšanās kontrastu, pārējā ķēde ir pašsaprotama.

S1 līdz S6 ir vēlēšanu pogas, caur kurām vēlētāji sniedz savu izvēli. Saglabāšanas un vadības poga ir jātur prom no vēlēšanu iecirkņa (kontrolējot atbildīgo vēlēšanu kabīni).

Jauna programma:
//--------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------//

Kā darboties ar šo elektronisko balsošanas mašīnu:

  • Pabeidzot aparatūras iestatīšanu, augšupielādējiet kodu ar vēlamo kandidātu vārdiem.
  • Ieslēdziet mašīnu, ja viss ir kārtībā, tas ilgi pīkstēs.
  • Tagad nospiediet vadības pogu, un tagad tā var ierakstīt vienu balsi.
  • Pēc katras balss vadības poga jānospiež vienreiz.
  • Kad ir nodots pēdējais balsojums, nospiediet pogu Saglabāt, lai saglabātu rezultātus un aicinātu atvienot strāvas padevi (lai rezultātus varētu apskatīt privāti).
  • Atkārtoti pievienojiet padevi, tā automātiski sāks rādīt rezultātus. Ja kandidāts nav ieguvis nevienu balsi, tas parāda “null”.
  • Lai rīkotu vēlēšanas, jums ir jāformatē SD karte / jāizdzēš visi faili, ko ģenerējis šis EVM.

Lūdzu, ņemiet vērā, ka šim EVM ir nepieciešama nepārtraukta barošana. Jebkura pārtraukuma gadījumā balsu skaits tiks nulle.

Lūdzu, ierakstiet kandidātu vārdus kodā (ne vairāk kā 16 burtus):

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

Stīgu puse1 = 'MODI'

Stīgu puse2 = 'TRUMP'

String Party3 = 'PUTIN' // Ievietojiet kandidātu vārdus šeit.

Stīgu partija4 = 'Abdul Kalam'

Stīgu puse5 = 'Girish'

Stīgu partija6 = 'Swagatam'

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

Ar šo projektu noslēdzas. Ja jums ir kādi jautājumi par šo projektu, nekautrējieties izteikties komentāru sadaļā, jūs varat saņemt ātru atbildi.




Pāri: Automašīnu tvertnes ūdens sensoru ķēde Nākamais: 3 cietvielu vienas IC 220V regulējamas barošanas ķēdes