SD కార్డ్ మాడ్యూల్‌తో ఎలక్ట్రానిక్ ఓటింగ్ మెషిన్

సమస్యలను తొలగించడానికి మా పరికరాన్ని ప్రయత్నించండి





ఈ పోస్ట్‌లో మేము ఆర్డునో మరియు ఎస్‌డి కార్డ్ మాడ్యూల్ ఉపయోగించి ఎలక్ట్రానిక్ ఓటింగ్ మెషీన్ కోసం సర్క్యూట్‌ను నిర్మించబోతున్నాం, అక్కడ ఎన్నికల డేటా ఎస్‌డి కార్డులో నిల్వ చేయబడుతుంది.

ద్వారా



UPDATE:

ఈ సర్క్యూట్ మెరుగైన సంస్కరణకు అప్‌గ్రేడ్ చేయబడింది, దీనిలో ఫలితాలను అటాచ్ చేసిన ఎల్‌సిడి డిస్‌ప్లే ద్వారా చూడవచ్చు, మీరు వివరాలను పోస్ట్ యొక్క దిగువ విభాగంలో పొందవచ్చు

16x2 LCD డిస్లేను ఉపయోగించడం

16 x 2 ప్రదర్శన ఓటింగ్ యంత్రం యొక్క స్థితిని చూపుతుంది మరియు మీరు మీ ఓటు వేసినప్పుడు, LED మరియు బజర్ యొక్క క్రియాశీలతతో పాటు అభ్యర్థి పేరు ప్రదర్శించబడుతుంది.



గమనిక: ప్రతిపాదిత ప్రాజెక్ట్ విద్యా ప్రయోజనం కోసం మాత్రమే తయారు చేయబడింది మరియు నిజమైన ఎన్నికల వినియోగానికి ఉద్దేశించినది కాదు.

ఎన్నికల ప్రక్రియను వేగవంతం చేయడానికి మరియు వినియోగ కాగితాన్ని తగ్గించడానికి ఎలక్ట్రానిక్ ఓటింగ్ యంత్రాలు అమలు చేయబడతాయి మరియు ఈ కారణాలు పరోక్షంగా ఎన్నికలకు సంబంధించిన ఖర్చులను తగ్గిస్తాయి.

సాంప్రదాయ కాగితం బ్యాలెట్ పద్ధతికి ముందు ఎలక్ట్రానిక్ ఓటింగ్ యంత్రాలు ఉన్నతమైన భద్రతను అందిస్తాయి.

కాంపాక్ట్ మెషీన్లను రవాణా చేయడం కంటే ఆ బల్క్ బ్యాలెట్ బాక్సులను రవాణా చేయడం ప్రమాదకరం, ఇక్కడ వాహన సంగ్రహ మోసాలు వాహనాన్ని పట్టుకోగలిగినప్పటికీ EVM (ఎలక్ట్రానిక్ ఓటింగ్ మెషిన్) లోని డేటాను మార్చలేవు.

ఉన్నతమైన భద్రత కారణంగా కొన్ని దేశాలు భారతీయ మేడ్ ఈవీఎంలపై ఆసక్తి చూపుతున్నాయి. ఎన్నికల డేటాను హ్యాకింగ్ మరియు మార్చడానికి ఎక్కువ ప్రమాదం ఉన్నందున యుఎస్ వంటి దేశాలు తమ ఎన్నికలకు సాంప్రదాయ కాగితపు బ్యాలెట్ పద్ధతిని అనుసరిస్తున్నాయి.

కాబట్టి, భారతీయుడు ఈవీఎంలను మరింత సురక్షితంగా మార్చారు? ఓటు లెక్కింపును సులభతరం చేయడానికి యుఎస్ విండోస్ ఆపరేటింగ్ సిస్టమ్‌తో లోడ్ చేయబడిన ఓటింగ్ యంత్రాలను తయారు చేసింది మరియు సర్వర్‌లతో నెట్‌వర్క్ చేయబడింది. ఎన్నికల డేటాను మార్చడానికి ఇది హ్యాకర్లకు చాలా లొసుగులను తెరుస్తుంది.

భారతీయ నిర్మిత EVM లు స్వతంత్ర పరికరాలు మరియు ఇంటర్నెట్ లేదా సర్వర్‌లకు కనెక్ట్ కాలేదు. ఓట్లను లెక్కించడానికి యంత్రాలను కౌంటింగ్ బూత్‌కు తీసుకువెళతారు, ఇక్కడ ఫలితాలు ప్రకటించబడతాయి మరియు మధ్య మనిషి లేరు.

ప్రతిపాదిత ప్రాజెక్ట్ భారతీయ EVM ల యొక్క సారూప్య కార్యాచరణతో రూపొందించబడింది, అయితే, చాలా మార్పులు చేయబడ్డాయి.

ఇప్పుడు ప్రాజెక్ట్ యొక్క నిర్మాణ వివరాలకు వెళ్దాం.

సర్క్యూట్ లేఅవుట్:

EVM లేఅవుట్ రేఖాచిత్రం

ప్రతిపాదిత EVM సర్క్యూట్ 6 మంది అభ్యర్థులను మాత్రమే ఉంచగలదు. నిజమైన EVM లలో నియంత్రణ యూనిట్ మాదిరిగానే నియంత్రణ బటన్ అందించబడుతుంది. ఒక వ్యక్తి అతని / ఆమె ఓటును కులించిన తరువాత, బ్యాలెట్ బటన్లు నిలిపివేయబడతాయి.

నియంత్రణ బటన్‌ను నొక్కిన తర్వాత మాత్రమే బ్యాలెట్ బటన్లు మళ్లీ ప్రారంభించబడతాయి. ఎన్నికల బూత్‌ను నియంత్రించే ఇన్‌ఛార్జి వ్యక్తి దగ్గర కంట్రోల్ బటన్ ఉంచబడుతుంది.

ఒక వ్యక్తి ఓటు వేసిన తరువాత అతను / ఆమె LED మరియు బజర్ యొక్క క్రియాశీలతతో గుర్తించబడుతుంది. ప్రదర్శనలో అతను / ఆమె ఎవరికి ఓటు వేశారో కూడా వ్యక్తి ధృవీకరించవచ్చు, ఇది అభ్యర్థి పేరు లేదా పార్టీ పేరును కొన్ని సెకన్ల పాటు చూపిస్తుంది. ఈ లక్షణం నిజమైన EVM లలో ఇప్పటికీ లేదు.

బొమ్మ నమునా:

కనెక్టివిటీని ప్రదర్శించే ఆర్డునో:




కనెక్టివిటీని ప్రదర్శించడానికి Arduino EVM సర్క్యూట్

ప్రాజెక్ట్ను నకిలీ చేసేటప్పుడు గందరగోళాన్ని నివారించడానికి సర్క్యూట్ రెండు భాగాలుగా విభజించబడింది. పై సర్క్యూట్ LCD డిస్ప్లే మరియు ఆర్డునో మధ్య వైరింగ్ గురించి వివరిస్తుంది. వాంఛనీయ కాంట్రాస్ట్ కోసం వేరియబుల్ రెసిస్టర్‌ను సర్దుబాటు చేయండి.

SD కార్డ్ మాడ్యూల్ మరియు ఆర్డునోతో ఎలక్ట్రానిక్ ఓటింగ్ మెషిన్ సర్క్యూట్

9V బ్యాటరీ, స్విచ్, ఏడు పుష్ బటన్లు, LED, బజర్ మరియు మరింత ముఖ్యంగా SD కార్డ్ మాడ్యూల్‌తో కూడిన మిగిలిన సర్క్యూట్ ఇక్కడ ఉంది.

ఓటు వేసిన తర్వాత SD కార్డ్ తక్షణమే డేటాను నిల్వ చేస్తుంది. ఎన్నికలు ముగిసిన తర్వాత ఓట్ల లెక్కింపు మరియు ఫలితాన్ని ప్రకటించడానికి SD కార్డును కంప్యూటర్‌లోకి చేర్చబడుతుంది.

ప్రతిపాదిత రూపకల్పన ప్రతి అభ్యర్థికి 4,294,967,295 (ఇది 4 బిలియన్లకు పైగా) ఓట్లు మరియు 25,769,803,770 (ప్రస్తుత ప్రపంచ జనాభా కంటే మూడు రెట్లు ఎక్కువ 25 బిలియన్లకు పైగా) ఓట్లను నమోదు చేయగలదు మరియు ఇప్పటికీ 99.9% కంటే ఎక్కువ SD కార్డ్ ఖాళీగా ఉంది .

ఇది యంత్రానికి 3840 ఓట్లను నమోదు చేయగల నిజమైన EVM ల కంటే చాలా సమర్థవంతంగా పనిచేస్తుంది.

కార్యక్రమం:

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

……… ఇది భారీ కార్యక్రమం.

ఈ EVM సర్క్యూట్‌ను ఎలా ఆపరేట్ చేయాలి:

The యంత్రాన్ని ఆన్ చేయండి, ప్రతిదీ బాగానే ఉందని సూచించే బీప్‌తో ఇది గుర్తించబడుతుంది. యంత్రం బాగా లేకపోతే, అది వేగంగా బీప్ అవుతుంది మరియు ఎల్‌సిడిలో దోష సందేశాన్ని ప్రదర్శిస్తుంది.
Button నియంత్రణ బటన్‌ను నొక్కండి, ఇప్పుడు అది ఒక ఓటును నమోదు చేయడానికి సిద్ధంగా ఉంది.
The ఓటు రికార్డ్ చేసిన తర్వాత అది ఎల్‌ఈడీ మరియు బీప్‌ను సెకనుకు సక్రియం చేస్తుంది మరియు మీరు ఓటు వేసిన అభ్యర్థి పేరును కొన్ని సెకన్ల పాటు ప్రదర్శిస్తుంది.
Vote తదుపరి ఓటును రికార్డ్ చేయడానికి నియంత్రణ బటన్‌ను మళ్లీ నొక్కాలి. కంట్రోల్ బటన్ నొక్కిన ప్రతిసారీ, బజర్ 3 చిన్న బీప్‌లను ఇస్తుంది.
Vot చివరి ఓటరు ఓటు వేసే వరకు ఇది కొనసాగించాలి. చివరి ఓటరు కులం ఓటు తర్వాత నియంత్రణ బటన్‌ను నొక్కాల్సిన అవసరం లేదు.
Vote చివరి ఓటు వేసిన తరువాత, ఆఫ్ స్విచ్ ఉపయోగించి యంత్రాన్ని వెంటనే ఆపివేయాలి మరియు SD కార్డ్ తొలగించబడాలి. తద్వారా డేటా ఏదీ మార్చబడదు.
Card SD కార్డ్‌ను కంప్యూటర్‌కు ప్లగ్ చేయండి మరియు క్రింద చూపిన విధంగా మీరు 6 టెక్స్ట్ ఫైల్‌లను చూడవచ్చు:

SD కార్డ్ ఫలితం కంప్యూటర్‌లో నిల్వ చేయబడుతుంది

ఫైల్‌ను తెరవడం క్రింద వివరించిన విధంగా అభ్యర్థి పేరు మరియు ఓటు సంఖ్యను చూపుతుంది:

రచయిత యొక్క నమూనా:

SD కార్డ్ మాడ్యూల్ యొక్క ఉదాహరణ:

గమనిక 1: విద్యుత్ సరఫరాలో ఏదైనా అంతరాయం ఉంటే ఓటు సంఖ్యను సున్నాకి రీసెట్ చేస్తుంది.
గమనిక 2: దయచేసి ప్రోగ్రామ్‌లో అభ్యర్థి పేరు మార్చండి.
స్ట్రింగ్ పార్టీ 1 = 'మోడి'
స్ట్రింగ్ పార్టీ 2 = 'ట్రంప్'
స్ట్రింగ్ పార్టీ 3 = 'పుతిన్' // అభ్యర్థి పేర్లను ఇక్కడ ఉంచండి.
స్ట్రింగ్ పార్టీ 4 = 'అబ్దుల్ కలాం'
స్ట్రింగ్ పార్టీ 5 = 'గిరీష్'
String Party6 = 'Swagatam'
గమనిక 3: ఒక నిర్దిష్ట పార్టీ / అభ్యర్థికి ఓటు వేయకపోతే, SD కార్డ్‌లో టెక్స్ట్ ఫైల్ కనిపించదు.

పై డిజైన్‌ను అప్‌గ్రేడ్ చేస్తోంది

ఎలక్ట్రానిక్ ఓటింగ్ మెషిన్ ప్రాజెక్ట్ యొక్క ఈ ప్రత్యేకమైన అప్‌గ్రేడ్ వెర్షన్‌ను ఈ వెబ్‌సైట్ యొక్క ఆసక్తిగల రీడర్ అయిన సుమేష్ చౌరాసియా అభ్యర్థించారు.

ఈ ప్రాజెక్ట్ పైన వివరించిన ఎలక్ట్రానిక్ ఓటింగ్ యంత్రంపై మెరుగుదల. పై EVM (ఎలక్ట్రానిక్ ఓటింగ్ మెషిన్) యొక్క ప్రధాన లోపం 16 x 2 LCD డిస్ప్లేలో ఫలితాన్ని చూడలేము, కాని ఇది కంప్యూటర్‌లో మాత్రమే చూడబడుతుంది.

ఈ ప్రాజెక్ట్‌లో మేము పేర్కొన్న డ్రా బ్యాక్ షూట్ చేయబోతున్నాం మరియు కొత్తగా ప్రతిపాదించిన డిజైన్‌తో ఎల్‌సిడి డిస్‌ప్లేలోని 6 మంది అభ్యర్థుల ఫలితాన్ని తక్షణమే చూడవచ్చు.

మేము ఎదుర్కొన్న ఇబ్బందులు:

మునుపటి EVM ప్రాజెక్ట్ యొక్క అన్ని ఇన్పుట్ / అవుట్పుట్ పిన్స్ (Arduino యొక్క) 16 x 2 డిస్ప్లే, SD కార్డ్ మాడ్యూల్, బ్యాలెట్ బటన్లు, కంట్రోల్ బటన్ మరియు బజర్ ద్వారా ఉపయోగించబడ్డాయి. ఏదైనా క్రొత్త బటన్‌ను కనెక్ట్ చేయడానికి ఎక్కువ గది లేదు.

కొన్ని పరిశోధనల తరువాత, ఏదైనా I / O పిన్‌లను అవుట్‌పుట్‌గా ఇన్‌పుట్‌గా మార్చవచ్చని మరియు ఏ సమయంలోనైనా దీనికి విరుద్ధంగా ఉంటుందని మేము కనుగొన్నాము.

జాగ్రత్తగా పరిశీలించిన తరువాత మేము LED / బజర్ పిన్ను సేవ్ బటన్‌గా ఎంచుకున్నాము. ఇప్పుడు ఈ పిన్ ఇన్పుట్ (సేవ్ బటన్) మరియు అవుట్పుట్ (బజర్) రెండింటిగా ప్రోగ్రామ్ చేయబడింది.

సేవ్ / బజర్ పిన్ ఒక రాష్ట్రంలో ఏదైనా ఒక క్షణంలో కేటాయించబడిందని గమనించండి, అనగా అవుట్పుట్ లేదా ఇన్పుట్.

సర్క్యూట్:

ఎల్‌సిడి టు ఆర్డునో కనెక్షన్:

మునుపటి స్కీమాటిక్స్ ప్రకారం కనెక్ట్ అవ్వండి మరియు సర్క్యూట్ యొక్క మిగిలిన కాంట్రాస్ట్ వీక్షణను సర్దుబాటు చేయడానికి 10 కె పొటెన్షియోమీటర్‌ను ఉపయోగించండి.

ఎస్ 1 నుండి ఎస్ 6 వరకు బ్యాలెట్ బటన్లు, దీని ద్వారా ఓటర్లు తమ ఎంపికను ఇన్పుట్ చేస్తారు. సేవ్ అండ్ కంట్రోల్ బటన్‌ను బ్యాలెట్ యూనిట్ నుండి దూరంగా ఉంచాలి (పోల్ బూత్ ఇన్‌ఛార్జి నియంత్రణలో).

క్రొత్త కార్యక్రమం:
//--------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------//

ఈ ఎలక్ట్రానిక్ ఓటింగ్ యంత్రాన్ని ఎలా ఆపరేట్ చేయాలి:

  • పూర్తయిన హార్డ్‌వేర్ సెటప్‌తో మీ కోరిక అభ్యర్థి పేర్లతో కోడ్‌ను అప్‌లోడ్ చేయండి.
  • మెషీన్ను ఆన్ చేయండి, ప్రతిదీ బాగా ఉంటే అది పొడవైన బీప్ ఇస్తుంది.
  • ఇప్పుడు కంట్రోల్ బటన్ నొక్కండి మరియు ఇప్పుడు అది ఒకే ఓటును రికార్డ్ చేస్తుంది.
  • ప్రతి ఓటు తరువాత నియంత్రణ బటన్‌ను ఒకసారి నొక్కాలి.
  • చివరి ఓటు వేసిన తర్వాత, సేవ్ బటన్‌ను నొక్కండి ఇది ఫలితాలను సేవ్ చేస్తుంది మరియు విద్యుత్ సరఫరాను డిస్‌కనెక్ట్ చేయమని మిమ్మల్ని అడుగుతుంది (తద్వారా మీరు ఫలితాలను ప్రైవేట్‌గా చూడవచ్చు).
  • సరఫరాను తిరిగి కనెక్ట్ చేయండి అది స్వయంచాలకంగా ఫలితాలను చూపడం ప్రారంభిస్తుంది. అభ్యర్థికి ఓటు రాకపోతే అది “శూన్య” ని ప్రదర్శిస్తుంది.
  • మరొక ఎన్నిక నిర్వహించడానికి, మీరు SD కార్డును ఫార్మాట్ చేయాలి / ఈ EVM ద్వారా ఉత్పత్తి చేయబడిన అన్ని ఫైళ్ళను తొలగించాలి.

దయచేసి ఈ EVM కి నిరంతరాయ శక్తి అవసరమని గమనించండి, ఏదైనా అంతరాయం ఓటు సంఖ్యను సున్నాకి రోల్ చేస్తుంది.

దయచేసి అభ్యర్థి పేర్లను కోడ్‌లో రాయండి (గరిష్టంగా 16 అక్షరాలు):

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

స్ట్రింగ్ పార్టీ 1 = 'మోడి'

స్ట్రింగ్ పార్టీ 2 = 'ట్రంప్'

స్ట్రింగ్ పార్టీ 3 = 'పుతిన్' // అభ్యర్థి పేర్లను ఇక్కడ ఉంచండి.

స్ట్రింగ్ పార్టీ 4 = 'అబ్దుల్ కలాం'

స్ట్రింగ్ పార్టీ 5 = 'గిరీష్'

String Party6 = 'Swagatam'

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

ఇది ప్రాజెక్ట్ను ముగించింది, ఈ ప్రాజెక్ట్ గురించి మీకు ఏవైనా ప్రశ్నలు ఉంటే వ్యాఖ్య విభాగంలో సంకోచించకండి, మీకు శీఘ్ర సమాధానం లభిస్తుంది.




మునుపటి: కార్ ట్యాంక్ వాటర్ సెన్సార్ సర్క్యూట్ తర్వాత: 3 సాలిడ్-స్టేట్ సింగిల్ ఐసి 220 వి సర్దుబాటు విద్యుత్ సరఫరా సర్క్యూట్లు