رباتیک و هوافضا

پروژه ی ساخت سیستم رای گیری الکترونیکی با استفاده از آردوینو و ماژول کارت حافظه

به نام خدا

پروژه ی ساخت سیستم رای گیری الکترونیکی با استفاده از آردوینو و ماژول کارت حافظه

در این پست قصد داریم با استفاده از آردوینو یک رای گیری الکترونیکی بسازیم که نتایج و داده ی های رای گیری داخل یک کارت حافظه ی اس دی ذخیره می شود. همچنین نتایج رای گیری در نهایت به وسیله ی کات حافظه بر روی کامپیوتر قابل مشاهده است. از سیستم هایی مانند این سیستم برای سرعت بخشیدن در روند رای گیری و همچنین شمارش استفاده می شود. در کشور های پیشرفته از نمونه ی این سیستم به جای سیستم رای گیری قدیمی استفاده می شود.

 

 

سیستم رای گیریی که در این پست ارائه شده است دارای هشت نامزد انتخاباتی می باشد. یک میکروسوئیچ جهت کنترل پروسه ، درست همانند سیستم های رای گیری الکترونیکی در این سیستم تعبیه شده است. هنگامی که شخص رای دهنده از بین شش میکروسوئیچ که هر کدام مخصوص یک کاندادید هستند ، یکی را انتخاب کرد تمامیه شش میکروسوئیچ غیر فعال می شود و هنگامی که میکرو سوئیچ کنترل فشرده شد دوباره امکان دادن رای فراهم می شود. میکروسوئیچ کنترل نزد ناظر انتخابات قرار می گیرد. بعد از رای دادن ، یک ال ای دی و یک بازر فعال می شود تا نشان دهد که رای شخص ثبت شده است. همچنین بعد از رای دادن نام شخص مورد نظر بر روی ال سی دی به نمایش در می آید.

بیشتر بخوانید...  راه اندازی موتور پله ای (استپر موتور)

 

 

 

 

شماتیک مدار:

اتصالات ال سی دی:

 

 

برای توضیح بهتر مدار آن را به دو قسمت تبدیل کرده ایم. در تصویر بالا اتصالات ال سی دی را مشاهده می کنید. از یک پتانسیومتر برای تنظیم کنتراست ال سی دی استفاده شده است.

 

 

در تصویر بالا قسمت دوم مدار را مشاهده می کنید. منبع تغذیه ی مدار یک باطری ۹ ولتی ست .هنگامی که رای گیری به پایان رسید می توانید کارت حافظه را به کامپیوتر متصل کنید تا نتیجه ی رای گیری را مشاهده کنید. این سیستم می تواند تعداد بیش از ۴ میلیارد رای  را برای هر یک از کاندید ها بشمارد! سیستم های رای گیری واقعی فقط ۳۸۴۰ رای را می توانند در خود جای دهند.

 

کد برنامه سیستم رای گیری الکترونیکی با استفاده از آردوینو :

دانلود فایل
#include <SPI.h>
#include <SD.h>
#include <LiquidCrystal.h>
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("----------------");
}
}
}

 

بیشتر بخوانید...  تولید صدای تیک تیک با استفاده از آی سی 555

 

 

برای مشاهده ی نتایج رای گیری ، بعد از اتمام رای گیری کارت حافظه را به کامپیوتر خود متصل کندی و در آن شش فایل با فرمت تکست خواهید دید که هر کدام مختص یک کاندید است.

 

با باز کردن فایل ، نام هر کاندید و تعدا رای دریافتی آن را می توانید مشاهده کنید. درست همانند تصویر پایین :

 

دیدگاه‌ها (0)

*
*