এসডি কার্ড মডিউল সহ বৈদ্যুতিন ভোটদান মেশিন

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





এই পোস্টে আমরা আরডুইনো এবং এসডি কার্ড মডিউল ব্যবহার করে একটি বৈদ্যুতিন ভোটদান মেশিনের জন্য একটি সার্কিট তৈরি করতে যাচ্ছি যেখানে এসডি কার্ডে নির্বাচনের তথ্য সংরক্ষণ করা হয়।

দ্বারা



হালনাগাদ:

এই সার্কিটটি একটি উন্নত সংস্করণে আপগ্রেড করা হয়েছে যাতে কোনও সংযুক্ত এলসিডি ডিসপ্লেতে ফলাফলগুলি দেখা যায়, আপনি পোস্টের নীচের অংশে বিশদটি পেতে পারেন

16x2 এলসিডি ডিসলে ব্যবহার করা হচ্ছে

একটি 16 এক্স 2 ডিসপ্লে ভোটদানের মেশিনের স্থিতি দেখায় এবং আপনি যখন নিজের ভোটদান করেন, তখন এলইডি এবং বুজার সক্রিয়করণের সাথে প্রার্থীর নাম প্রদর্শিত হবে।



দ্রষ্টব্য: প্রস্তাবিত প্রকল্পটি কেবলমাত্র শিক্ষামূলক উদ্দেশ্যে এবং বাস্তব নির্বাচনের ব্যবহারের উদ্দেশ্যে নয় is

বৈদ্যুতিন ভোটিং মেশিনগুলি নির্বাচন প্রক্রিয়াটি দ্রুত করার জন্য এবং ব্যবহারের কাগজ হ্রাস করার জন্য প্রয়োগ করা হয় এবং এই কারণগুলি অপ্রত্যক্ষভাবে নির্বাচনের সাথে সম্পর্কিত ব্যয় হ্রাস করে।

বৈদ্যুতিন ভোটদান মেশিনগুলি traditionalতিহ্যবাহী কাগজ ব্যালট পদ্ধতির আগে উচ্চতর সুরক্ষা সরবরাহ করে।

এই বাল্ক ব্যালট বাক্সগুলি পরিবহন কমপ্যাক্ট মেশিনগুলির চেয়ে ঝুঁকিপূর্ণ, যেখানে যানবাহন ক্যাপচার জালিয়াতি ইভিএম (বৈদ্যুতিন ভোটদান মেশিন) এর কোনও তথ্য পরিবর্তন করতে পারে না যদিও কেউ গাড়িটি ধরতে সক্ষম হয়।

কিছু দেশ উচ্চতর সুরক্ষার কারণে ভারতীয় তৈরি ইভিএমগুলিতে আগ্রহ দেখাচ্ছে। নির্বাচনের তথ্য হ্যাকিং এবং পরিবর্তনের উচ্চ ঝুঁকির কারণে মার্কিন যুক্তরাষ্ট্রের মতো দেশগুলি এখনও তাদের নির্বাচনের জন্য traditionalতিহ্যবাহী কাগজ ব্যালট পদ্ধতিতে অনড় থাকে।

তাহলে, ভারতীয় ইভিএমগুলিকে আরও সুরক্ষিত করে তোলে? ঠিক আছে, মার্কিন ভোটদান মেশিনগুলি উইন্ডোজ অপারেটিং সিস্টেম দ্বারা বোঝাই করে তৈরি করেছে এবং ভোট গণনা সহজ করার জন্য সার্ভারগুলির সাথে নেটওয়ার্ক করেছে। নির্বাচনের ডেটা পরিবর্তন করতে হ্যাকারদের পক্ষে এটি অনেকগুলি ফাঁক উন্মুক্ত করে।

ভারতীয় তৈরি ইভিএমগুলি একক ডিভাইস এবং ইন্টারনেট বা সার্ভারের সাথে সংযুক্ত নয়। ভোট গণনা করার জন্য মেশিনগুলি গণনা বুথে নিয়ে যাওয়া হয়, যেখানে ফলাফল ঘোষণা করা হবে এবং কোনও মাঝারি মানুষ নেই।

প্রস্তাবিত প্রকল্পটি ভারতীয় ইভিএমগুলির অনুরূপ কার্যকারিতা সহ ডিজাইন করা হয়েছে তবে অনেকগুলি পরিবর্তন হয়েছে।

এখন আসুন প্রকল্পের নির্মাণের বিশদগুলিতে যান।

সার্কিট লেআউট:

ইভিএম লেআউট ডায়াগ্রাম

প্রস্তাবিত ইভিএম সার্কিটটিতে কেবলমাত্র 6 জন প্রার্থী থাকতে পারবেন। একটি নিয়ন্ত্রণ বোতাম বাস্তব ইভিএমগুলিতে নিয়ন্ত্রণ ইউনিটের সমান সরবরাহ করা হয়। কোনও ব্যক্তি তার ভোট বর্ণের পরে, ব্যালট বোতামগুলি অক্ষম করা হয়।

ব্যালট বোতামগুলি কেবল নিয়ন্ত্রণ বোতাম টিপলেই আবার সক্ষম হয়। নির্বাচন বুথ নিয়ন্ত্রণকারী দায়িত্বে থাকা ব্যক্তির কাছে নিয়ন্ত্রণ বোতামটি রাখা হবে।

কোনও ব্যক্তি ভোট দেওয়ার পরে তিনি এলইডি এবং বুজার সক্রিয়করণের সাথে স্বীকৃত হন। সেই ব্যক্তি যার দ্বারা তিনি প্রদর্শনীতে কাস্ট করেছেন ভোটটি নিশ্চিত করতে পারবেন, এটি কয়েক সেকেন্ডের জন্য প্রার্থীর নাম বা দলের নাম প্রদর্শন করবে। এই বৈশিষ্ট্যটি এখনও বাস্তব ইভিএমগুলিতে উপস্থিত নেই।

পরিকল্পিত ডায়াগ্রাম:

আরডুইনো সংযোগ প্রদর্শন করছে:




সংযোগ প্রদর্শনের জন্য আরডুইনো ইভিএম সার্কিট

প্রকল্পটি নকল করার সময় বিভ্রান্তি এড়াতে সার্কিটকে দুটি ভাগে ভাগ করা হয়েছে। উপরের সার্কিটটি এলসিডি ডিসপ্লে এবং আরডুইনোর মধ্যে ওয়্যারিংয়ের বর্ণনা দেয়। সর্বোত্তম বৈপরীত্যের জন্য ভেরিয়েবল রোধকে সামঞ্জস্য করুন।

এসডি কার্ড মডিউল এবং আরডুইনো সহ বৈদ্যুতিন ভোটদান মেশিন সার্কিট

এখানে 9V ব্যাটারি, স্যুইচ, সাতটি পুশ বোতাম, এলইডি, বুজার এবং আরও গুরুত্বপূর্ণভাবে এসডি কার্ড মডিউল নিয়ে গঠিত বাকী সার্কিটটি রয়েছে।

কোনও ভোট দেওয়ার পরে এসডি কার্ড তাত্ক্ষণিকভাবে ডেটা সঞ্চয় করবে। নির্বাচন শেষ হয়ে গেলে এসডি কার্ডটি একটি কম্পিউটারে প্রবেশের পরে ভোট গণনা এবং ফলাফল ঘোষণা করে declare

প্রস্তাবিত নকশাটিতে প্রার্থী হিসাবে 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------//

……… এটি একটি বিশাল প্রোগ্রাম।

এই ইভিএম সার্কিটটি কীভাবে পরিচালনা করবেন:

The মেশিনটি চালু করুন, এটি একটি বীপের সাথে স্বীকৃতি দেবে যা নির্দেশ করে যে সবকিছু ঠিক আছে। মেশিনটি ঠিক না থাকলে এটি দ্রুত বীপ দেয় এবং এলসিডিতে ত্রুটি বার্তা প্রদর্শন করে।
Control নিয়ন্ত্রণ বোতাম টিপুন, এখন এটি একটি ভোট রেকর্ড করতে প্রস্তুত।
• একবার ভোট রেকর্ড হয়ে গেলে এটি একটি সেকেন্ডের জন্য এলইডি এবং বীপ সক্রিয় করবে এবং আপনি যে প্রার্থীর কাছে কয়েক সেকেন্ডের জন্য ভোট দিয়েছিলেন সেই প্রার্থীর নাম প্রদর্শন করবে।
Next পরবর্তী ভোটের রেকর্ড করতে নিয়ন্ত্রণ বোতামটি আবার চাপতে হবে। প্রতিবার কন্ট্রোল বোতাম টিপলে বুজারটি 3 টি শর্ট বিপ দেয়।
Voter সর্বশেষ ভোটার তাদের ভোট দেওয়ার আগ পর্যন্ত এটি চালিয়ে যেতে হবে। সর্বশেষ ভোটার জাতের ভোটের পরে নিয়ন্ত্রণ বোতাম টিপতে হবে না।
Vote সর্বশেষ ভোট দেওয়ার পরে, অফ স্যুইচটি ব্যবহার করে মেশিনটি তত্ক্ষণাত বন্ধ করা উচিত এবং এসডি কার্ডটি সরানো উচিত। যাতে কোনও ডেটা পরিবর্তন করা যায় না।
The এসডি কার্ডটি একটি কম্পিউটারে প্লাগ করুন এবং নীচের চিত্রের মতো আপনি 6 টি পাঠ্য ফাইল দেখতে পারবেন:

এসডি কার্ডের ফলাফল কম্পিউটারে সঞ্চিত

একটি ফাইল খোলার মাধ্যমে প্রার্থীর নাম এবং ভোটের সংখ্যা প্রদর্শিত হবে, নীচের চিত্রিত হিসাবে:

লেখকের প্রোটোটাইপ:

এসডি কার্ড মডিউলটির চিত্র:

নোট 1: বিদ্যুৎ সরবরাহে যে কোনও বাধা ভোটের গণনা শূন্যে পুনরায় সেট করবে।
দ্রষ্টব্য 2: দয়া করে প্রোগ্রামটিতে প্রার্থীর নাম পরিবর্তন করুন।
স্ট্রিং পার্টি 1 = 'মোডি'
স্ট্রিং পার্টি 2 = 'ট্রাম্প'
স্ট্রিং পার্টি 3 = 'পুটিন' // প্রার্থীর নাম এখানে রাখুন।
স্ট্রিং পার্টি 4 = 'আবদুল কালাম'
স্ট্রিং পার্টি 5 = 'গিরিশ'
স্ট্রিং পার্টি = = 'স্বગતম'
দ্রষ্টব্য 3: কোনও নির্দিষ্ট দল / প্রার্থীকে যদি কোনও ভোট না দেওয়া হয় তবে এসডি কার্ডে টেক্সট ফাইল উপস্থিত হবে না।

উপরোক্ত ডিজাইনটি আপগ্রেড করা হচ্ছে

বৈদ্যুতিন ভোটদান মেশিন প্রকল্পের এই বিশেষ আপগ্রেড সংস্করণটি সুমেশ চৌরাসিয়া অনুরোধ করেছিলেন, যিনি এই ওয়েবসাইটটির আগ্রহী পাঠক।

এই প্রকল্পটি উপরে বর্ণিত বৈদ্যুতিন ভোটদান মেশিনের একটি উন্নতি। উপরের ইভিএমের প্রধান ত্রুটি (বৈদ্যুতিন ভোটদান মেশিন) ফলাফলটি 16 x 2 এলসিডি ডিসপ্লেতে দেখা যায়নি, তবে এটি কেবল কম্পিউটারে দেখা যায়।

এই প্রকল্পে আমরা উল্লিখিত ড্র পিছনে ফিরে শুটিং করতে যাচ্ছি এবং নতুন প্রস্তাবিত নকশার সাহায্যে আমরা তাত্ক্ষণিকভাবে এলসিডি ডিসপ্লেতে 6 প্রার্থীর ফলাফল দেখতে পারি।

আমরা যে সমস্যার মুখোমুখি হয়েছি:

পূর্ববর্তী ইভিএম প্রকল্পের সমস্ত ইনপুট / আউটপুট পিনগুলি (আরডুইনোর) 16 এক্স 2 ডিসপ্লে, এসডি কার্ড মডিউল, ব্যালট বোতাম, নিয়ন্ত্রণ বোতাম এবং বুজার দ্বারা ব্যবহৃত হয়েছিল। কোনও নতুন বোতাম সংযোগের জন্য আর কোনও জায়গা বাকি নেই।

কিছু গবেষণার পরে আমরা দেখতে পেলাম যে কোনও আই / ও পিনগুলি আউটপুট থেকে ইনপুট এবং যে কোনও সময়ে বিপরীতে পরিবর্তন করা যেতে পারে।

যত্ন সহকারে পর্যবেক্ষণের পরে আমরা এলইডি / বুজার পিনটি সেভ বোতাম হিসাবে বেছে নিয়েছি। এখন এই পিনটি ইনপুট (সেভ বোতাম) এবং আউটপুট (বুজার) উভয় হিসাবে প্রোগ্রাম করা হয়েছে।

নোট করুন যে সেভ / বুজার পিনটি তাত্ক্ষণিক অর্থ আউটপুট বা ইনপুট এ রাজ্যের যে কোনও একটিতে বরাদ্দ করা হয়েছে।

সার্কিট:

আরডিনো সংযোগে এলসিডি:

পূর্ববর্তী স্কিমেটিক্স অনুসারে কেবল সংযোগ করুন এবং সার্কিটের বাকি অংশের কনট্রাস্ট ভিউজ অ্যাডজাস্ট করার জন্য 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------//

এই বৈদ্যুতিন ভোটদান মেশিনটি কীভাবে পরিচালনা করবেন:

  • সম্পন্ন হার্ডওয়্যার সেটআপ সহ আপনার ইচ্ছার প্রার্থীর নাম সহ কোড আপলোড করুন।
  • মেশিনটি চালু করুন, সবকিছু ঠিকঠাক থাকলে এটি একটি দীর্ঘ বিপ দেয়।
  • এখন নিয়ন্ত্রণ বোতাম টিপুন এবং এখন এটি একটি একক ভোট রেকর্ড করতে পারে।
  • প্রতিটি ভোটের পরে নিয়ন্ত্রণ বোতামটি একবার চাপতে হবে।
  • সর্বশেষ ভোট কাস্ট হয়ে গেলে, সেভ বোতাম টিপুন এটি ফলাফলগুলি সংরক্ষণ করবে এবং আপনাকে বিদ্যুৎ সরবরাহ বিচ্ছিন্ন করার অনুরোধ জানাবে (যাতে আপনি ফলাফলগুলি ব্যক্তিগতভাবে দেখতে পারেন)।
  • সরবরাহটি পুনরায় সংযোগ করুন এটি স্বয়ংক্রিয়ভাবে ফলাফলগুলি দেখাতে শুরু করবে। যদি কোনও প্রার্থী কোনও ভোট না পান তবে এটি 'নাল' প্রদর্শন করে।
  • অন্য নির্বাচন পরিচালনা করতে, আপনাকে এসডি কার্ড ফর্ম্যাট করতে হবে / এই ইভিএম দ্বারা উত্পন্ন সমস্ত ফাইল মুছতে হবে।

দয়া করে মনে রাখবেন যে এই ইভিএমকে নিরবচ্ছিন্ন শক্তি প্রয়োজন, যে কোনও বাধা ভোটের গণনা শূন্যে পরিণত করবে।

দয়া করে কোডটিতে প্রার্থীর নাম লিখুন (সর্বোচ্চ 16 টি অক্ষর):

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

স্ট্রিং পার্টি 1 = 'মোডি'

স্ট্রিং পার্টি 2 = 'ট্রাম্প'

স্ট্রিং পার্টি 3 = 'পুটিন' // প্রার্থীর নাম এখানে রাখুন।

স্ট্রিং পার্টি 4 = 'আবদুল কালাম'

স্ট্রিং পার্টি 5 = 'গিরিশ'

স্ট্রিং পার্টি = = 'স্বગતম'

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

এটি প্রকল্পটি শেষ করে, আপনার যদি এই প্রকল্পের বিষয়ে কোনও প্রশ্ন থাকে তবে বিনা দ্বিধায় মন্তব্য বিভাগে মন্তব্য করতে পারেন, আপনি একটি দ্রুত উত্তর পেতে পারেন।




পূর্ববর্তী: গাড়ী ট্যাঙ্কের জল সেন্সর সার্কিট পরবর্তী: 3 সলিড-স্টেট একক আইসি 220 ভি সামঞ্জস্যযোগ্য পাওয়ার সাপ্লাই সার্কিট