एसडी कार्ड मॉड्यूल के साथ इलेक्ट्रॉनिक वोटिंग मशीन

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





इस पोस्ट में हम Arduino और SD कार्ड मॉड्यूल का उपयोग करके एक इलेक्ट्रॉनिक वोटिंग मशीन के लिए एक सर्किट का निर्माण करने जा रहे हैं जहां चुनाव डेटा एसडी कार्ड में संग्रहीत किया जाता है।

द्वारा



अपडेट करें:

इस सर्किट को एक उन्नत संस्करण में अपग्रेड किया गया है, जिसमें परिणाम संलग्न एलसीडी डिस्प्ले पर देखे जा सकते हैं, आप पोस्ट के निचले भाग में विवरण प्राप्त कर सकते हैं

16x2 एलसीडी डिस्क का उपयोग करना

16 x 2 डिस्प्ले वोटिंग मशीन की स्थिति दिखाता है और जब आप अपना वोट डालते हैं, तो उम्मीदवार का नाम एलईडी और बजर की सक्रियता के साथ प्रदर्शित किया जाएगा।



नोट: प्रस्तावित परियोजना केवल शैक्षिक उद्देश्य के लिए बनाई गई है और वास्तविक चुनाव उपयोग के लिए नहीं है।

इलेक्ट्रॉनिक वोटिंग मशीनों को चुनाव प्रक्रिया को तेज करने और उपयोग के कागज को कम करने के लिए लागू किया जाता है और ये कारण अप्रत्यक्ष रूप से चुनाव से संबंधित खर्चों को कम करते हैं।

इलेक्ट्रॉनिक वोटिंग मशीन पारंपरिक पेपर बैलट विधि से पहले बेहतर सुरक्षा प्रदान करती हैं।

उन बल्क मतपेटियों को परिवहन करना कॉम्पैक्ट मशीनों के परिवहन की तुलना में जोखिम भरा है, जहां वाहन कैप्चर धोखाधड़ी ईवीएम (इलेक्ट्रॉनिक वोटिंग मशीन) में डेटा को बदल नहीं सकते हैं, भले ही वाहन को पकड़ने में सक्षम हो।

कुछ देश बेहतर सुरक्षा के कारण भारतीय निर्मित ईवीएम पर रुचि दिखा रहे हैं। हैकिंग के अधिक जोखिम और चुनाव के आंकड़ों में फेरबदल के कारण अमेरिका जैसे देश अभी भी अपने चुनाव के लिए पारंपरिक पेपर बैलेट पद्धति से चिपके हुए हैं।

तो, क्या भारतीय ने ईवीएम को अधिक सुरक्षित बना दिया? खैर, अमेरिका ने वोटिंग मशीनों को विंडोज ऑपरेटिंग सिस्टम से लोड किया और वोटों की गिनती आसान बनाने के लिए सर्वरों के साथ नेटवर्क बनाया। यह हैकर्स के लिए चुनाव डेटा को बदलने के लिए बहुत सारी खामियों को खोलता है।

भारतीय निर्मित ईवीएम स्टैंडअलोन डिवाइस हैं और इंटरनेट या सर्वर से नहीं जुड़े हैं। वोटों की गिनती के लिए मशीनों को मतगणना बूथ तक ले जाया जाता है, जहां नतीजे घोषित किए जाएंगे और कोई मध्यम व्यक्ति नहीं होगा।

प्रस्तावित परियोजना को भारतीय ईवीएम की समान कार्यक्षमता के साथ बनाया गया है लेकिन, इसमें बहुत सारे संशोधन किए गए हैं।

अब परियोजना के रचनात्मक विवरण के लिए कदम बढ़ाएँ।

सर्किट लेआउट:

ईवीएम लेआउट आरेख

प्रस्तावित ईवीएम सर्किट केवल 6 उम्मीदवारों को समायोजित कर सकता है। वास्तविक ईवीएम में नियंत्रण इकाई के समान एक नियंत्रण बटन प्रदान किया जाता है। किसी व्यक्ति द्वारा अपना वोट डालने के बाद, मतपत्र बटन अक्षम हो जाते हैं।

कंट्रोल बटन दबाने के बाद ही फिर से बैलेट बटन को सक्षम किया जाता है। नियंत्रण बटन को उस व्यक्ति के पास रखा जाएगा जो चुनाव बूथ पर नियंत्रण रखता है।

एक व्यक्ति को वोट देने के बाद उसे एलईडी और बजर की सक्रियता के साथ स्वीकार किया जाता है। वह व्यक्ति वोट की पुष्टि भी कर सकता है जिसे उसने प्रदर्शन में डाला था, यह उम्मीदवार का नाम या पार्टी का नाम कुछ सेकंड के लिए दिखाएगा। यह सुविधा अभी भी वास्तविक ईवीएम में मौजूद नहीं है।

योजनाबद्ध आरेख:

Arduino प्रदर्शन कनेक्टिविटी:




कनेक्टिविटी प्रदर्शित करने के लिए Arduino EVM सर्किट

प्रोजेक्ट को डुप्लिकेट करते समय भ्रम से बचने के लिए सर्किट को दो भागों में विभाजित किया गया है। उपरोक्त सर्किट में एलसीडी डिस्प्ले और आर्डिनो के बीच वायरिंग का वर्णन है। इष्टतम विपरीत के लिए चर रोकनेवाला समायोजित करें।

एसडी कार्ड मॉड्यूल और Arduino के साथ इलेक्ट्रॉनिक वोटिंग मशीन सर्किट

यहां 9V बैटरी, स्विच, सात पुश बटन, एलईडी, बजर और अधिक महत्वपूर्ण एसडी कार्ड मॉड्यूल से युक्त बाकी सर्किट है।

वोट डालने के तुरंत बाद एसडी कार्ड डाटा को स्टोर कर लेगा। एक बार चुनाव खत्म होने के बाद वोट की गिनती और परिणाम घोषित करने के लिए एसडी कार्ड को कंप्यूटर में डाला जाता है।

प्रस्तावित डिजाइन प्रति उम्मीदवार 4,294,967,295 (जो 4 बिलियन से अधिक) वोटों और 25,769,803,770 (25 बिलियन से अधिक जो वर्तमान दुनिया की आबादी से अधिक है) वोट प्रति मशीन रिकॉर्ड कर सकते हैं और 99.9% से अधिक एसडी कार्ड अभी भी खाली है ।

यह असली ईवीएम की तुलना में कहीं अधिक कुशल है जो प्रति मशीन 3840 वोट रिकॉर्ड कर सकता है।

कार्यक्रम:

//--------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 सर्किट को कैसे संचालित करें:

• मशीन को चालू करें, यह एक बीप के साथ स्वीकार करेगा जो यह दर्शाता है कि सब कुछ ठीक है। यदि मशीन ठीक नहीं है, तो यह तेजी से बीप करता है और एलसीडी पर त्रुटि संदेश प्रदर्शित करता है।
• नियंत्रण बटन दबाएं, अब यह एक वोट रिकॉर्ड करने के लिए तैयार है।
• वोट दर्ज होने के बाद, यह एलईडी और बीप को एक दूसरे के लिए सक्रिय करेगा और उस उम्मीदवार का नाम प्रदर्शित करेगा, जिसे आपने कुछ सेकंड के लिए वोट दिया था।
• अगला वोट रिकॉर्ड करने के लिए कंट्रोल बटन को फिर से दबाना होगा। हर बार कंट्रोल बटन दबाने पर बजर 3 शॉर्ट बीप देता है।
• इसे तब तक जारी रखा जाना चाहिए जब तक कि अंतिम मतदाता अपना वोट न डाल दे। अंतिम मतदाता के वोट देने के बाद नियंत्रण बटन दबाने की आवश्यकता नहीं है।
• आखिरी वोट डाले जाने के बाद, मशीन को ऑफ स्विच का उपयोग करके तुरंत बंद कर दिया जाना चाहिए और एसडी कार्ड को हटा दिया जाना चाहिए। ताकि कोई भी डाटा में बदलाव न किया जाए।
• एसडी कार्ड को कंप्यूटर में प्लग करें और आप नीचे दिखाए गए अनुसार 6 टेक्स्ट फाइल देख सकते हैं:

एसडी कार्ड परिणाम कंप्यूटर में संग्रहीत

एक फ़ाइल खोलने से उम्मीदवार का नाम और वोट की संख्या दिखाई जाएगी, जैसा कि नीचे दिखाया गया है:

लेखक का प्रोटोटाइप:

एसडी कार्ड मॉड्यूल का चित्रण:

नोट 1: बिजली की आपूर्ति में किसी भी रुकावट से वोट की संख्या शून्य हो जाएगी।
नोट 2: कृपया कार्यक्रम में उम्मीदवार का नाम बदलें।
स्ट्रिंग पार्टी 1 = 'MODI'
स्ट्रिंग पार्टी 2 = 'ट्रम्प'
स्ट्रिंग पार्टी 3 = 'पुतिन' // यहां उम्मीदवार नाम रखें।
स्ट्रिंग पार्टी 4 = 'अब्दुल कलाम'
स्ट्रिंग पार्टी 5 = 'गिरीश'
स्ट्रिंग पार्टी 6 = 'स्वगतम'
नोट 3: यदि किसी विशेष पार्टी / उम्मीदवार को कोई वोट नहीं दिया जाता है तो पाठ फ़ाइल एसडी कार्ड में दिखाई नहीं देगी।

उपरोक्त डिज़ाइन को अपग्रेड करना

इलेक्ट्रॉनिक वोटिंग मशीन परियोजना के इस विशेष उन्नत संस्करण का अनुरोध सुमेश चौरसिया ने किया था, जो इस वेबसाइट के शौकीन पाठक हैं।

यह परियोजना ऊपर बताई गई इलेक्ट्रॉनिक वोटिंग मशीन पर एक सुधार है। उपरोक्त ईवीएम (इलेक्ट्रॉनिक वोटिंग मशीन) का मुख्य दोष यह था कि परिणाम 16 x 2 एलसीडी डिस्प्ले पर नहीं देखा जा सकता था, लेकिन इसे केवल कंप्यूटर पर देखा जा सकता है।

इस परियोजना में हम उल्लेखित ड्रा बैक शूट कर रहे हैं और नए प्रस्तावित डिजाइन के साथ हम एलसीडी डिस्प्ले पर 6 उम्मीदवारों के परिणाम को तुरंत देख सकते हैं।

कठिनाइयों का सामना करना पड़ा है:

पिछले ईवीएम प्रोजेक्ट के सभी इनपुट / आउटपुट पिन (अरुडिनो के) 16 x 2 डिस्प्ले, एसडी कार्ड मॉड्यूल, बैलेट बटन, कंट्रोल बटन और बजर द्वारा उपयोग किए गए थे। किसी भी नए बटन को जोड़ने के लिए अधिक जगह नहीं बची है।

कुछ शोधों के बाद हमने पाया कि किसी भी I / O पिन को इनपुट में आउटपुट में बदला जा सकता है और इसके विपरीत किसी भी बिंदु पर।

सावधान अवलोकन के बाद हमने सेव बटन के रूप में एलईडी / बजर पिन को चुना। अब इस पिन ने इनपुट (सेव बटन) और आउटपुट (बजर) दोनों के रूप में प्रोग्राम किया।

ध्यान दें कि सहेजें / बजर पिन को किसी भी एक राज्य में इंस्टेंट यानी आउटपुट या इनपुट पर सौंपा गया है।

सर्किट:

Arduino कनेक्शन के लिए एलसीडी:

बस पहले की योजना के अनुसार कनेक्ट करें और परिपथ के विपरीत कंट्रास्ट को देखने के समायोजन के लिए 10K पोटेंशियोमीटर का उपयोग करें।

S1 से S6 बैलट बटन हैं, जिसके जरिए मतदाता अपनी पसंद का इनपुट देते हैं। सेव और कंट्रोल बटन को बैलेट यूनिट (पोल बूथ प्रभारी के नियंत्रण में) से दूर रखा जाना चाहिए।

नया कार्यक्रम:
//--------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------//

इस इलेक्ट्रॉनिक वोटिंग मशीन को कैसे संचालित करें:

  • पूर्ण हार्डवेयर सेटअप के साथ अपनी इच्छा के उम्मीदवारों के नाम के साथ कोड अपलोड करें।
  • मशीन चालू करें, यदि सब कुछ ठीक है तो यह एक लंबी बीप देगा।
  • अब कंट्रोल बटन दबाएं और अब यह एक वोट रिकॉर्ड कर सकता है।
  • प्रत्येक वोट के बाद नियंत्रण बटन को एक बार दबाया जाना चाहिए।
  • एक बार अंतिम वोट देने के बाद, सेव बटन दबाएं, इससे परिणाम बचेंगे और आपको बिजली की आपूर्ति को बंद करने का संकेत मिलेगा (ताकि आप निजी में परिणाम देख सकें)।
  • आपूर्ति को फिर से कनेक्ट करें यह स्वचालित रूप से परिणाम दिखाना शुरू कर देगा। यदि किसी उम्मीदवार को 'null' प्रदर्शित होने वाला कोई भी वोट नहीं मिलता है।
  • एक और चुनाव कराने के लिए, आपको एसडी कार्ड को प्रारूपित करना होगा / इस ईवीएम द्वारा उत्पन्न सभी फाइलों को हटाना होगा।

कृपया ध्यान दें कि इस ईवीएम को निर्बाध शक्ति की आवश्यकता है, किसी भी रुकावट से वोट की संख्या शून्य हो जाएगी।

कृपया कोड में उम्मीदवार के नाम लिखें (अधिकतम 16 अक्षर):

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

स्ट्रिंग पार्टी 1 = 'MODI'

स्ट्रिंग पार्टी 2 = 'ट्रम्प'

स्ट्रिंग पार्टी 3 = 'पुतिन' // यहां उम्मीदवार नाम रखें।

स्ट्रिंग पार्टी 4 = 'अब्दुल कलाम'

स्ट्रिंग पार्टी 5 = 'गिरीश'

स्ट्रिंग पार्टी 6 = 'स्वगतम'

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

इस परियोजना का समापन होता है, यदि आपके पास इस परियोजना के बारे में कोई प्रश्न है, तो टिप्पणी अनुभाग में व्यक्त करने के लिए स्वतंत्र महसूस करें, आपको त्वरित उत्तर मिल सकता है।




की एक जोड़ी: कार टैंक पानी सेंसर सर्किट अगला: 3 सॉलिड-स्टेट सिंगल आईसी 220V एडजस्टेबल पावर सप्लाई सर्किट