Elektroninen äänestyslaite SD-korttimoduulilla

Elektroninen äänestyslaite SD-korttimoduulilla

Tässä viestissä aiomme rakentaa piirin elektroniselle äänestyskoneelle käyttämällä Arduino- ja SD-korttimoduulia, jossa vaalitiedot on tallennettu SD-kortille.

Tekijä



PÄIVITTÄÄ:

Tämä piiri on päivitetty parannettuun versioon, jossa tuloksia voidaan tarkastella liitetyllä LCD-näytöllä. Saat yksityiskohdat viestin alaosasta



16x2 LCD -näytön käyttäminen

16 x 2 -näyttö näyttää äänestyskoneen tilan, ja kun annat äänesi, ehdokkaan nimi näkyy yhdessä LEDin ja summerin aktivoitumisen kanssa.

Huomautus: Ehdotettu projekti on tarkoitettu vain koulutustarkoituksiin eikä sitä ole tarkoitettu todelliseen vaalien käyttöön.



Sähköisiä äänestyskoneita käytetään vaaliprosessin nopeuttamiseksi ja käyttöpaperin vähentämiseksi, ja nämä syyt vähentävät epäsuorasti vaaleihin liittyviä kuluja.

Elektroniset äänestyskoneet tarjoavat ensiluokkaisen turvallisuuden ennen perinteistä paperiäänestysmenetelmää.

Näiden irtolastikorttien kuljettaminen on vaarallista kuin pienikokoisten koneiden kuljettaminen, joissa ajoneuvojen sieppauspetokset eivät voi muuttaa EVM: n (elektroninen äänestyskone) tietoja, vaikka pystytään sieppaamaan ajoneuvo.



Jotkut maat ovat osoittaneet kiinnostusta intialaisten EVM: ien suhteen korkean turvallisuuden takia. Yhdysvaltojen kaltaiset maat pitävät vaaleissaan edelleen perinteistä paperiäänestysmenetelmää, koska hakkerointi ja vaalitietojen muuttaminen ovat suurempia.

Joten mikä teki intialaisesta EVM: t turvallisemmiksi? No, Yhdysvallat teki äänestyskoneista ladatut Windows-käyttöjärjestelmän ja verkottuneet palvelimien kanssa, jotta ääntenlasku olisi helppoa. Tämä avaa hakkereille paljon porsaanreikiä muuttamaan vaalitietoja.

Intialaiset EVM: t ovat erillisiä laitteita, eivätkä ne ole yhteydessä Internetiin tai palvelimiin. Äänien laskemiseen koneet viedään laskuriin, jossa tulokset ilmoitetaan eikä keskimmäistä miestä.

Ehdotettu projekti on suunniteltu samanlaisilla toiminnoilla kuin intialaiset EVM: t, mutta on tehty paljon muutoksia.

Siirrytään nyt projektin rakenteellisiin yksityiskohtiin.

Piirin asettelu:

EVM-asettelukaavio

Ehdotettu EVM-piiri voi olla vain 6 ehdokasta. Ohjauspainike on samanlainen kuin todellisten EVM-laitteiden ohjausyksikkö. Kun joku on antanut äänensä, äänestyspainikkeet poistetaan käytöstä.

Äänestyspainikkeet otetaan uudelleen käyttöön vasta ohjauspainikkeen painamisen jälkeen. Ohjauspainike sijoitetaan vaalikoppaa ohjaavan vastuuhenkilön lähelle.

Kun henkilö on antanut äänestyksen, hänet kuitataan LEDin ja summerin aktivoitumisella. Henkilö voi myös vahvistaa äänen, jolle hän antoi näytöllä, siinä näkyy ehdokkaan nimi tai puolueen nimi muutaman sekunnin ajan. Tätä ominaisuutta ei vielä ole todellisissa EVM: issä.

Kaaviokuva:

Arduino näyttää yhteyden:




Arduino EVM -piiri yhteyksien näyttämiseen

Piiri on jaettu kahteen osaan sekaannusten välttämiseksi kopioimalla projektia. Yllä oleva piiri kuvaa johdotusta LCD-näytön ja arduinon välillä. Säädä muuttuva vastus optimaalisen kontrastin saamiseksi.

Sähköinen äänestyspiiri SD-korttimoduulilla ja Arduinolla

Tässä on loput piiristä, joka koostuu 9 V: n akusta, kytkimestä, seitsemästä painikkeesta, LEDistä, summerista ja ennen kaikkea SD-korttimoduulista.

SD-kortti tallentaa tiedot heti äänen antamisen jälkeen. Kun vaalit ovat ohitse, SD-kortti asetetaan tietokoneeseen äänten määrän ja tuloksen ilmoittamiseksi.

Ehdotettu malli voi tallentaa jopa 4 294 967 295 (mikä on yli 4 miljardia) ääntä ehdokasta kohden ja 25 769 803770 (yli 25 miljardia, mikä on yli kolme kertaa nykyisen maailman väestöstä) ääntä konetta kohden ja silti yli 99,9% SD-kortti on vielä tyhjä .

Tämä on paljon tehokkaampaa kuin todelliset EVM: t, jotka voivat tallentaa 3840 ääntä konetta kohden.

Ohjelmoida:

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

……… Se on valtava ohjelma.

Kuinka käyttää tätä EVM-piiriä:

• Kytke kone päälle, se antaa äänimerkin, joka osoittaa, että kaikki on kunnossa. Jos kone ei ole kunnossa, se antaa nopean äänimerkin ja näyttää virheilmoituksen nestekidenäytössä.
• Paina ohjauspainiketta, nyt se on valmis nauhoittamaan yhden äänen.
• Kun äänestys on tallennettu, se aktivoi LEDin ja piippaa sekunnin ajan ja näyttää sen ehdokkaan nimen, jolle äänestit muutaman sekunnin.
• Seuraavan äänityksen tallentamiseksi ohjauspainiketta on painettava uudelleen. Joka kerta kun ohjauspainiketta painetaan, summeri antaa 3 lyhyttä äänimerkkiä.
• Tätä on jatkettava, kunnes viimeinen äänestäjä antaa äänensä. Ohjauspainiketta ei tarvitse painaa sen jälkeen, kun viimeinen äänestäjä on valinnut äänestyksen.
• Kun viimeinen ääni on annettu, kone on sammutettava välittömästi virtakytkimellä ja SD-kortti on poistettava. Joten tietoja ei muuteta.
• Liitä SD-kortti tietokoneeseen ja näet 6 tekstitiedostoa alla olevan kuvan mukaisesti:

SD-kortin tulos tallennetaan tietokoneeseen

Tiedoston avaaminen näyttää ehdokkaan nimen ja äänten määrän alla olevan kuvan mukaisesti:

Kirjoittajan prototyyppi:

Kuva SD-korttimoduulista:

Huomautus 1: Jokainen virransyötön keskeytys palauttaa äänten määrän nollaan.
Huomautus 2: Vaihda ehdokkaan nimi ohjelmassa.
String Party1 = 'MODI'
String Party2 = 'TRUMP'
String Party3 = 'PUTIN' // Sijoita ehdokkaiden nimet tähän.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
Huomautus 3: Jos tietylle puolueelle / ehdokkaalle ei anneta ääntä, tekstitiedosto ei näy SD-kortissa.

Yllä olevan mallin päivittäminen

Tämän erityisen päivitetyn version sähköisestä äänestyskonehankkeesta pyysi Sumesh Chourasia, joka on innokas lukija tälle verkkosivustolle.

Tämä projekti on parannus edellä selitettyyn elektroniseen äänestyskoneeseen verrattuna. Edellä mainitun EVM: n (elektroninen äänestyskone) tärkein haittapuoli oli, että tulosta ei voitu tarkastella 16 x 2 LCD-näytöllä, mutta sitä voidaan tarkastella vain tietokoneella.

Tässä projektissa ammutaan mainitut vedot takaisin ja äskettäin ehdotetun mallin avulla voimme tarkastella kuuden ehdokkaan tulosta LCD-näytöllä välittömästi.

Vaikeudet, joita olemme kohdanneet:

Kaikki edellisen EVM-projektin tulo- / lähtöliittimet (Arduino) käytettiin 16 x 2 -näytöllä, SD-korttimoduulilla, äänestyspainikkeilla, ohjauspainikkeella ja summerilla. Ei enää tilaa uuden painikkeen liittämiseen.

Joidenkin tutkimusten jälkeen havaitsimme, että kaikki I / O-nastat voidaan muuttaa tuloksi tuloksi ja päinvastoin missä tahansa vaiheessa.

Huolellisen tarkkailun jälkeen valitsimme LED / summeri-nastan tallennuspainikkeeksi. Nyt tämä tappi on ohjelmoitu sekä tuloksi (tallennuspainike) että ulostuloksi (summeri).

Huomaa, että tallennus- / summeri-tappi osoitetaan missä tahansa tilassa hetkessä, ts. Lähtö tai tulo.

Piiri:

LCD-Arduino-yhteys:

Liitä vain aikaisempien kaavioiden mukaan ja käytä 10K-potentiometriä katselukontrastin säätämiseen, piiri on itsestään selvä.

S1 - S6 ovat äänestyspainikkeita, joiden kautta äänestäjät syöttävät valintansa. Tallennus- ja ohjauspainike on pidettävä poissa äänestysyksikön luota (valvontakeskuksen vastuulla).

Uusi ohjelma:
//--------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------//

Kuinka käyttää tätä elektronista äänestyskonetta:

  • Kun laitteiston asennus on valmis, lataa koodi haluamiesi ehdokkaiden nimillä.
  • Käynnistä kone, jos kaikki on kunnossa, se antaa pitkän äänimerkin.
  • Paina nyt ohjauspainiketta ja nyt se voi tallentaa yhden äänen.
  • Jokaisen äänestyksen jälkeen ohjauspainiketta on painettava kerran.
  • Kun viimeinen ääni on annettu, paina tallennuspainiketta, jolloin tulokset tallentuvat ja kehotetaan irrottamaan virtalähde (jotta voit tarkastella tuloksia yksityisesti).
  • Liitä syöttö uudelleen, se alkaa automaattisesti näyttää tuloksia. Jos ehdokas ei saanut yhtään ääntä, se näyttää 'tyhjä'.
  • Toisten vaalien suorittamiseksi sinun on alustettava SD-kortti / poistettava kaikki tämän EVM: n luomat tiedostot.

Huomaa, että tämä EVM tarvitsee keskeytyksettömän virran, minkä tahansa keskeytyksen seurauksena äänimäärä lasketaan nollaan.

Kirjoita ehdokkaiden nimet koodiin (enintään 16 kirjainta):

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

String Party1 = 'MODI'

String Party2 = 'TRUMP'

String Party3 = 'PUTIN' // Sijoita ehdokkaiden nimet tähän.

String Party4 = 'Abdul Kalam'

String Party5 = 'Girish'

String Party6 = 'Swagatam'

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

Se on projektin päättävä. Jos sinulla on kysyttävää tästä projektista, ilmaise asia rohkeasti kommenttiosassa, saatat saada nopean vastauksen.




Pari: Autosäiliön vesianturin piiri Seuraava: 3 kiinteän olomuodon yhden IC: n 220 V: n säädettävää virtalähdepiiriä