الیکٹرانک ووٹنگ مشین SD کارڈ ماڈیول کے ساتھ

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





اس پوسٹ میں ہم ارڈینو اور ایسڈی کارڈ ماڈیول کا استعمال کرتے ہوئے الیکٹرانک ووٹنگ مشین کے لئے ایک سرکٹ تیار کرنے جارہے ہیں جہاں ایس ڈی کارڈ میں انتخابی ڈیٹا محفوظ ہے۔

بذریعہ



اپ ڈیٹ:

اس سرکٹ کو بہتر ورژن میں اپ گریڈ کیا گیا ہے جس میں ایل سی ڈی ڈسپلے کے ساتھ نتائج دیکھے جاسکتے ہیں ، آپ تفصیلات پوسٹ کے نیچے والے حصے پر حاصل کرسکتے ہیں۔

16x2 LCD ڈسلے استعمال کرنا

16 x 2 ڈسپلے میں ووٹنگ مشین کی حیثیت ظاہر ہوتی ہے اور جب آپ اپنا ووٹ ڈالیں گے تو ، ایل ای ڈی اور بزر کو چالو کرنے کے ساتھ ساتھ امیدوار کا نام بھی دکھایا جائے گا۔



نوٹ: مجوزہ پروجیکٹ صرف تعلیمی مقصد کے لئے بنایا گیا ہے اور نہ کہ حقیقی انتخابات کے استعمال کے لئے۔

الیکٹرانک ووٹنگ مشینیں انتخابی عمل کو تیز کرنے اور استعمال کے کاغذ کو کم کرنے کے لئے نافذ کی جاتی ہیں اور ان وجوہات سے بالواسطہ طور پر انتخابات سے متعلق اخراجات کم ہوجاتے ہیں۔

روایتی کاغذی بیلٹ طریقہ سے قبل الیکٹرانک ووٹنگ مشینیں اعلی تحفظ فراہم کرتی ہیں۔

کمپیکٹ مشینوں کی نقل و حمل کے مقابلے میں ان بلک بیلٹ باکسوں کی نقل و حمل خطرہ ہے ، جہاں گاڑیوں کی گرفتاری کی دھوکہ دہی ای وی ایم (الیکٹرانک ووٹنگ مشین) کے اعداد و شمار میں ردوبدل نہیں کرسکتی ہے ، اگرچہ وہ گاڑی پر قبضہ کرنے میں کامیاب ہے۔

کچھ ممالک اعلی سکیورٹی کی وجہ سے ہندوستانی ساختہ ای وی ایم پر دلچسپی کا مظاہرہ کر رہے ہیں۔ انتخابی اعداد و شمار ہیک کرنے اور ان میں بدلاؤ آنے کے زیادہ خطرہ کی وجہ سے امریکہ جیسے ممالک اب بھی اپنے انتخابات کے لئے کاغذی بیلٹ کے روایتی طریقہ کار پر قائم ہیں۔

تو ، ہندوستانی ای وی ایم کو اور زیادہ محفوظ بنانے والی چیز کیا ہے؟ ٹھیک ہے ، ووٹ کی گنتی کو آسان بنانے کے ل US ، امریکہ نے ونڈوز آپریٹنگ سسٹم سے لدی ہوئی ووٹنگ مشینیں بنائیں اور سرور کے ساتھ نیٹ ورک کی۔ اس سے ہیکرز نے انتخابی اعداد و شمار میں ردوبدل کرنے کیلئے بہت ساری خرابیاں کھولی ہیں۔

ہندوستانی ساختہ ای وی ایم اسٹینڈ آلہ ہیں اور انٹرنیٹ یا سرور سے منسلک نہیں ہیں۔ ووٹوں کی گنتی کے لئے مشینیں گنتی بوتھ تک لے گئیں ، جہاں نتائج کا اعلان کیا جائے گا اور کوئی درمیانی آدمی نہیں۔

مجوزہ پروجیکٹ ہندوستانی ای وی ایم کی اسی طرح کی فعالیت کے ساتھ ڈیزائن کیا گیا ہے لیکن اس میں بہت ساری ترمیم کی گئی ہے۔

آئیے اس منصوبے کی تعمیری تفصیلات کی طرف چلتے ہیں۔

سرکٹ لے آؤٹ:

ای وی ایم لے آؤٹ ڈایاگرام

مجوزہ ای وی ایم سرکٹ میں صرف 6 امیدوار رہ سکتے ہیں۔ ایک کنٹرول بٹن اصلی ای وی ایم میں کنٹرول یونٹ کی طرح فراہم کیا جاتا ہے۔ جب کسی شخص نے اپنا ووٹ الگ کیا تو بیلٹ بٹن غیر فعال ہوجاتے ہیں۔

صرف کنٹرول بٹن دبانے کے بعد بیلٹ بٹن دوبارہ فعال ہوجاتے ہیں۔ کنٹرول بٹن انچارج شخص کے قریب رکھا جائے گا جو انتخابی بوتھ کو کنٹرول کرتا ہے۔

جب کسی شخص نے ووٹ کاسٹ کیا تو اسے ایل ای ڈی اور بزر کو چالو کرنے کے ساتھ تسلیم کیا جاتا ہے۔ وہ شخص بھی اس ووٹ کی تصدیق کرسکتا ہے جس نے اسے / جس نے ڈسپلے میں کاسٹ کیا تھا ، اس میں امیدوار کا نام یا پارٹی کا نام دو سیکنڈ تک دکھائے گا۔ یہ خصوصیت ابھی تک حقیقی ای وی ایم میں موجود نہیں ہے۔

اسکیمیٹک ڈایاگرام:

ایردوینو رابطہ ظاہر کررہا ہے:




رابطے کی نمائش کے ل for آرڈوینو ای وی ایم سرکٹ

اس منصوبے کی نقل کرتے ہوئے الجھنوں سے بچنے کے لئے سرکٹ کو دو حصوں میں تقسیم کیا گیا ہے۔ مذکورہ بالا سرکٹ LCD ڈسپلے اور ارڈوینو کے مابین کی تاریں بیان کرتا ہے۔ زیادہ سے زیادہ اس کے برعکس کیلئے متغیر ریزٹر ایڈجسٹ کریں۔

الیکٹرانک ووٹنگ مشین سرکٹ SD کارڈ ماڈیول اور اردوینو کے ساتھ

یہاں 9V بیٹری ، سوئچ ، سات پش بٹن ، ایل ای ڈی ، بوزر اور زیادہ اہم بات یہ ہے کہ SD کارڈ ماڈیول پر مشتمل باقی سرکٹ یہاں ہے۔

ووٹ کاسٹ کیے جانے کے بعد ایس ڈی کارڈ فوری طور پر ڈیٹا کو محفوظ کرے گا۔ ایک بار جب انتخابات ختم ہوجاتے ہیں تو کمپیوٹر میں ووٹ کی گنتی اور نتائج کا اعلان کرنے کے لئے ایس ڈی کارڈ داخل کیا جاتا ہے۔

مجوزہ ڈیزائن میں ہر امیدوار 4،294،967،295 (جو 4 ارب سے زیادہ ہے) اور 25،769،803،770 (25 ارب سے زیادہ جو موجودہ دنیا کی آبادی سے تین گنا زیادہ ہے) کے اندراج کرسکتے ہیں اور اب بھی 99.9٪ سے زیادہ SD کارڈ خالی ہے .

یہ حقیقی ای وی ایم سے کہیں زیادہ موثر ہے جو فی مشین 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------//

……… یہ ایک بہت بڑا پروگرام ہے۔

اس ای وی ایم سرکٹ کو کیسے چلائیں:

ON مشین کو آن کریں ، یہ ایک بیپ کے ساتھ تسلیم کرے گا جس میں اشارہ ہوگا کہ سب کچھ ٹھیک ہے۔ اگر مشین ٹھیک نہیں ہے تو ، یہ تیزی سے بیپ پڑتا ہے اور LCD پر غلطی کا پیغام دکھاتا ہے۔
control کنٹرول بٹن دبائیں ، اب یہ ایک ووٹ ریکارڈ کرنے کے لئے تیار ہے۔
• ایک بار ووٹ ریکارڈ ہونے کے بعد یہ ایل ای ڈی کو چالو کرے گا اور ایک سیکنڈ کیلئے بیپ لگائے گا اور اس امیدوار کا نام ظاہر کرے گا جس کو آپ نے سیکنڈ کے لئے ووٹ دیا تھا۔
next اگلے ووٹ کو ریکارڈ کرنے کے لئے دوبارہ کنٹرول بٹن دبانا پڑتا ہے۔ ہر بار جب کنٹرول کا بٹن دب جاتا ہے تو ، بوزر 3 مختصر بیپ دیتا ہے۔
• جب تک آخری ووٹر نے اپنا ووٹ کاسٹ نہیں کیا تب تک اسے جاری رکھنا پڑتا ہے۔ ووٹر کے آخری ووٹر کی ذات کے بعد کنٹرول بٹن دبانے کی ضرورت نہیں ہے۔
vote آخری ووٹ کاسٹ ہونے کے بعد ، آف سوئچ کا استعمال کرتے ہوئے مشین کو فوری طور پر بند کردینا چاہئے اور ایس ڈی کارڈ کو ہٹا دینا چاہئے۔ تاکہ کسی بھی ڈیٹا میں ردوبدل نہ ہو۔
the ایسڈی کارڈ کو کسی کمپیوٹر میں پلگ ان کریں اور آپ نیچے دیئے گئے 6 متن فائلوں کو دیکھ سکتے ہیں۔

ایس ڈی کارڈ کا نتیجہ کمپیوٹر میں اسٹور ہوا

فائل کھولنے سے امیدوار کا نام اور ووٹ کی تعداد دکھائے گی ، جیسا کہ ذیل میں واضح کیا گیا ہے:

مصنف کی پروٹو ٹائپ:

ایسڈی کارڈ ماڈیول کی مثال:

نوٹ 1: بجلی کی فراہمی میں کسی قسم کی رکاوٹ ووٹوں کی گنتی کو صفر پر بحال کردے گی۔
نوٹ 2: براہ کرم پروگرام میں امیدوار کا نام تبدیل کریں۔
سٹرنگ پارٹی 1 = 'موڈی'
سٹرنگ پارٹی 2 = 'ٹرومپ'
سٹرنگ پارٹی 3 = 'پوٹن' // امیدواروں کے نام یہاں رکھیں۔
سٹرنگ پارٹی 4 = 'عبد الکلام'
سٹرنگ پارٹی 5 = 'گیریش'
سٹرنگ پارٹی 6 = 'سوگاتم'
نوٹ 3: اگر کسی خاص پارٹی / امیدوار کو ووٹ نہیں ڈالے جاتے ہیں تو ایس ڈی کارڈ میں ٹیکسٹ فائل نظر نہیں آئے گی۔

اوپر ڈیزائن کو اپ گریڈ کرنا

الیکٹرانک ووٹنگ مشین پروجیکٹ کے اس خصوصی اپ گریڈ ورژن کی درخواست سومیش چورسیا نے کی تھی ، جو اس ویب سائٹ کے ایک دلچسپ ریڈر ہیں۔

اس منصوبے میں الیکٹرانک ووٹنگ مشین کی وضاحت کی گئی ہے۔ مذکورہ بالا ای وی ایم (الیکٹرانک ووٹنگ مشین) کی اصل خرابی یہ تھی کہ اس کا نتیجہ 16 x 2 LCD ڈسپلے پر نہیں دیکھا جاسکتا ہے ، لیکن یہ صرف کمپیوٹر پر دیکھا جاسکتا ہے۔

اس پروجیکٹ میں ہم ذکر ڈرا بیک شوٹ کر رہے ہیں اور نئے مجوزہ ڈیزائن کے ساتھ ہم LCD ڈسپلے پر 6 امیدواروں کا نتیجہ فوری طور پر دیکھ سکتے ہیں۔

جن مشکلات کا سامنا کرنا پڑا:

پچھلے ای وی ایم پروجیکٹ کے تمام ان پٹ / آؤٹ پٹ پنوں (اردوینو کے) کو 16 x 2 ڈسپلے ، ایس ڈی کارڈ ماڈیول ، بیلٹ بٹن ، کنٹرول بٹن اور بوزر نے استعمال کیا تھا۔ کسی بھی نئے بٹن کو منسلک کرنے کے لئے مزید گنجائش نہیں بچی ہے۔

کچھ تحقیق کے بعد ہمیں معلوم ہوا کہ کسی بھی I / O پنوں کو آؤٹ پٹ میں ان پٹ میں تبدیل کیا جاسکتا ہے اور اس کے برعکس کسی بھی مقام پر۔

محتاط مشاہدے کے بعد ہم نے بٹن کے طور پر ایل ای ڈی / بوزر پن کا انتخاب کیا۔ اب یہ پن ان پٹ (سیو بٹن) اور آؤٹ پٹ (بوزر) دونوں کے طور پر پروگرام کیا گیا ہے۔

نوٹ کریں کہ سییو / بوزر پن کسی بھی ریاست میں فوری طور پر آؤٹ پٹ یا ان پٹ پر تفویض کیا گیا ہے۔

سرکٹ:

ایردوینو کنکشن سے LCD

صرف پہلے کی حکمت عملی کے مطابق جڑیں اور سرکٹ کے باقی حصوں کو دیکھنے کے ل adjust ایڈجسٹ کرنے کے لئے 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------//

اس الیکٹرانک ووٹنگ مشین کو کیسے چلائیں:

  • ہارڈ ویئر سیٹ اپ کے ذریعے اپنے خواہش مند امیدواروں کے ناموں کے ساتھ کوڈ اپ لوڈ کریں۔
  • مشین کو آن کریں ، اگر سب کچھ ٹھیک ہے تو یہ لمبی بیپ دے گا۔
  • اب کنٹرول بٹن دبائیں اور اب یہ ایک بھی ووٹ ریکارڈ کرسکتا ہے۔
  • ہر ووٹ کے بعد کنٹرول بٹن ایک بار دبایا جانا چاہئے۔
  • ایک بار آخری ووٹ ڈالنے کے بعد ، سیف بٹن دبائیں اس سے نتائج محفوظ ہوں گے اور آپ کو بجلی کی فراہمی منقطع کرنے کا اشارہ کریں گے (تاکہ آپ نتائج کو نجی طور پر دیکھ سکیں)۔
  • سپلائی کو دوبارہ مربوط کریں یہ خود بخود نتائج دکھانا شروع کردے گا۔ اگر کسی امیدوار کو کوئی ووٹ نہیں ملتا ہے تو وہ 'کالعدم' دکھاتا ہے۔
  • دوسرا الیکشن کرانے کے ل you ، آپ کو ایس وی کارڈ کی شکل دینا ہوگی / اس ای وی ایم کے ذریعہ تیار کردہ تمام فائلوں کو حذف کرنا ہوگا۔

براہ کرم نوٹ کریں کہ اس ای وی ایم کو بلاتعطل بجلی کی ضرورت ہے ، کسی بھی رکاوٹ سے ووٹوں کی گنتی صفر ہوجائے گی۔

برائے کرم امیدوار کے نام کوڈ میں لکھیں (زیادہ سے زیادہ 16 حرف)

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

سٹرنگ پارٹی 1 = 'موڈی'

سٹرنگ پارٹی 2 = 'ٹرومپ'

سٹرنگ پارٹی 3 = 'پوٹن' // امیدواروں کے نام یہاں رکھیں۔

سٹرنگ پارٹی 4 = 'عبد الکلام'

سٹرنگ پارٹی 5 = 'گیریش'

سٹرنگ پارٹی 6 = 'سوگاتم'

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

اس منصوبے کا اختتام ہوتا ہے ، اگر آپ کو اس پروجیکٹ کے بارے میں کوئی سوال ہے تو تبصرہ سیکشن میں آزادانہ طور پر اظہار خیال کریں تو آپ کو فوری جواب مل سکتا ہے۔




پچھلا: کار ٹینک واٹر سینسر سرکٹ اگلا: 3 ٹھوس ریاست واحد سنگل IC 220V ایڈجسٹ پاور سپلائی سرکٹس