எஸ்டி கார்டு தொகுதி கொண்ட மின்னணு வாக்குப்பதிவு இயந்திரம்

சிக்கல்களை அகற்ற எங்கள் கருவியை முயற்சிக்கவும்





இந்த இடுகையில், ஆர்டுயினோ மற்றும் எஸ்டி கார்டு தொகுதிகளைப் பயன்படுத்தி எலக்ட்ரானிக் வாக்குப்பதிவு இயந்திரத்திற்கான சுற்று ஒன்றை உருவாக்க உள்ளோம், அங்கு தேர்தல் தரவு எஸ்டி கார்டில் சேமிக்கப்படுகிறது.

வழங்கியவர்



புதுப்பிப்பு:

இந்த சுற்று மேம்படுத்தப்பட்ட பதிப்பாக மேம்படுத்தப்பட்டுள்ளது, இதில் இணைக்கப்பட்ட எல்சிடி டிஸ்ப்ளே மூலம் முடிவுகளைப் பார்க்க முடியும், நீங்கள் விவரங்களை இடுகையின் கீழ் பகுதியில் பெறலாம்

16x2 எல்சிடி டிஸ்லேவைப் பயன்படுத்துகிறது

16 x 2 காட்சி வாக்களிக்கும் இயந்திரத்தின் நிலையைக் காட்டுகிறது, நீங்கள் வாக்களிக்கும் போது, ​​எல்.ஈ.டி மற்றும் பஸரை செயல்படுத்துவதோடு வேட்பாளரின் பெயரும் காண்பிக்கப்படும்.



குறிப்பு: முன்மொழியப்பட்ட திட்டம் கல்வி நோக்கத்திற்காக மட்டுமே தயாரிக்கப்பட்டுள்ளது, உண்மையான தேர்தல் பயன்பாட்டிற்காக அல்ல.

தேர்தல் செயல்முறையை விரைவுபடுத்துவதற்கும் பயன்பாட்டுக் காகிதத்தைக் குறைப்பதற்கும் மின்னணு வாக்குப்பதிவு இயந்திரங்கள் செயல்படுத்தப்படுகின்றன, மேலும் இந்த காரணங்கள் தேர்தல்கள் தொடர்பான செலவுகளை மறைமுகமாகக் குறைக்கின்றன.

பாரம்பரிய காகித வாக்கு முறைக்கு முன்னர் மின்னணு வாக்குப்பதிவு இயந்திரங்கள் சிறந்த பாதுகாப்பை வழங்குகின்றன.

காம்பாக்ட் இயந்திரங்களை கொண்டு செல்வதை விட அந்த மொத்த வாக்குப் பெட்டிகளைக் கொண்டு செல்வது ஆபத்தானது, அங்கு வாகனத்தைக் கைப்பற்றும் மோசடிகளால் ஈ.வி.எம் (எலக்ட்ரானிக் வாக்குப்பதிவு இயந்திரம்) இல் உள்ள தரவை மாற்ற முடியாது.

சில நாடுகள் உயர்ந்த பாதுகாப்பு காரணமாக இந்திய தயாரிக்கப்பட்ட ஈ.வி.எம். அமெரிக்கா போன்ற நாடுகள் தேர்தல் தரவை ஹேக்கிங் மற்றும் மாற்றுவதற்கான அதிக ஆபத்து காரணமாக தங்கள் தேர்தல்களுக்கான பாரம்பரிய காகித வாக்குச்சீட்டு முறையை இன்னும் ஒட்டிக்கொள்கின்றன.

எனவே, இந்தியன் ஈ.வி.எம்-களை மிகவும் பாதுகாப்பானதாக்கியது எது? வாக்களிக்கும் எண்ணிக்கையை எளிதாக்குவதற்காக அமெரிக்கா வாக்களிக்கும் இயந்திரங்களை விண்டோஸ் இயக்க முறைமையுடன் ஏற்றி சேவையகங்களுடன் நெட்வொர்க் செய்தது. இது தேர்தல் தரவை மாற்ற ஹேக்கர்களுக்கு நிறைய ஓட்டைகளைத் திறக்கிறது.

இந்திய தயாரிக்கப்பட்ட ஈ.வி.எம் கள் முழுமையான சாதனங்கள் மற்றும் இணையம் அல்லது சேவையகங்களுடன் இணைக்கப்படவில்லை. வாக்குகளை எண்ணுவதற்கு இயந்திரங்கள் எண்ணும் சாவடிக்கு கொண்டு செல்லப்படுகின்றன, அங்கு முடிவுகள் அறிவிக்கப்படும், நடுத்தர மனிதர் இல்லை.

முன்மொழியப்பட்ட திட்டம் இந்திய ஈ.வி.எம்-களின் ஒத்த செயல்பாட்டுடன் வடிவமைக்கப்பட்டுள்ளது, ஆனால், நிறைய மாற்றங்கள் செய்யப்பட்டுள்ளன.

இப்போது திட்டத்தின் கட்டுமான விவரங்களுக்கு செல்லலாம்.

சுற்று தளவமைப்பு:

ஈ.வி.எம் தளவமைப்பு வரைபடம்

முன்மொழியப்பட்ட ஈ.வி.எம் சுற்று 6 வேட்பாளர்களை மட்டுமே அனுமதிக்க முடியும். உண்மையான ஈ.வி.எம்-களில் கட்டுப்பாட்டு அலகுக்கு ஒத்த கட்டுப்பாட்டு பொத்தான் வழங்கப்படுகிறது. ஒரு நபர் தனது / அவள் வாக்களித்த பிறகு, வாக்கு பொத்தான்கள் முடக்கப்பட்டுள்ளன.

கட்டுப்பாட்டு பொத்தானை அழுத்திய பின்னரே வாக்கு பொத்தான்கள் மீண்டும் இயக்கப்படும். தேர்தல் சாவடியைக் கட்டுப்படுத்தும் பொறுப்பாளருக்கு அருகில் கட்டுப்பாட்டு பொத்தான் வைக்கப்படும்.

ஒரு நபர் வாக்களித்த பிறகு, அவர் / அவள் எல்.ஈ.டி மற்றும் பஸரை செயல்படுத்துவதன் மூலம் ஒப்புக் கொள்ளப்படுகிறார்கள். காட்சியில் அவர் / அவள் யாருக்கு வாக்களித்தார்கள் என்பதையும் அந்த நபர் உறுதிப்படுத்த முடியும், இது வேட்பாளர் பெயர் அல்லது கட்சியின் பெயரை இரண்டு வினாடிகள் காண்பிக்கும். உண்மையான EVM களில் இந்த அம்சம் இன்னும் இல்லை.

திட்ட வரைபடம்:

Arduino இணைப்பு காண்பிக்கும்:




இணைப்பைக் காண்பிப்பதற்கான Arduino EVM சுற்று

திட்டத்தை நகலெடுக்கும் போது குழப்பங்களைத் தவிர்க்க சுற்று இரண்டு பகுதிகளாக பிரிக்கப்பட்டுள்ளது. மேலே உள்ள சுற்று எல்சிடி டிஸ்ப்ளே மற்றும் அர்டுயினோ இடையே வயரிங் விவரிக்கிறது. உகந்த மாறுபாட்டிற்கான மாறி மின்தடையத்தை சரிசெய்யவும்.

எஸ்டி கார்டு தொகுதி மற்றும் அர்டுயினோவுடன் மின்னணு வாக்குப்பதிவு இயந்திர சுற்று

9 வி பேட்டரி, சுவிட்ச், ஏழு புஷ் பொத்தான்கள், எல்.ஈ.டி, பஸர் மற்றும் மிக முக்கியமாக எஸ்டி கார்டு தொகுதி ஆகியவற்றைக் கொண்ட மீதமுள்ள சுற்று இங்கே.

வாக்களித்த பின்னர் SD அட்டை தரவை உடனடியாக சேமிக்கும். தேர்தல் முடிந்ததும் எஸ்டி கார்டு ஒரு கணினியில் செருகப்பட்டு வாக்கு எண்ணிக்கையையும் முடிவையும் அறிவிக்கும்.

முன்மொழியப்பட்ட வடிவமைப்பு ஒரு வேட்பாளருக்கு 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 கணினியை இயக்கவும், எல்லாம் நன்றாக இருப்பதைக் குறிக்கும் பீப் மூலம் அது ஒப்புக் கொள்ளும். இயந்திரம் சரியாக இல்லாவிட்டால், அது வேகமாக ஒலிக்கிறது மற்றும் பிழை செய்தியை எல்சிடியில் காண்பிக்கும்.
Button கட்டுப்பாட்டு பொத்தானை அழுத்தவும், இப்போது ஒரு வாக்குகளைப் பதிவு செய்யத் தயாராக உள்ளது.
The வாக்களிக்கப்பட்டதும் அது எல்.ஈ.டி மற்றும் பீப்பை ஒரு நொடிக்கு செயல்படுத்தி, நீங்கள் வாக்களித்த வேட்பாளரின் பெயரை இரண்டு வினாடிகள் காண்பிக்கும்.
Vote அடுத்த வாக்குகளைப் பதிவு செய்ய கட்டுப்பாட்டு பொத்தானை மீண்டும் அழுத்த வேண்டும். கட்டுப்பாட்டு பொத்தானை அழுத்தும் ஒவ்வொரு முறையும், பஸர் 3 குறுகிய பீப்புகளைக் கொடுக்கும்.
Vot கடைசி வாக்காளர் வாக்களிக்கும் வரை இது தொடர வேண்டும். கடைசி வாக்காளர் சாதி வாக்களித்த பிறகு கட்டுப்பாட்டு பொத்தானை அழுத்த வேண்டிய அவசியமில்லை.
Vote கடைசி வாக்களிக்கப்பட்ட பிறகு, ஆஃப் சுவிட்சைப் பயன்படுத்தி இயந்திரத்தை உடனடியாக அணைக்க வேண்டும் மற்றும் எஸ்டி கார்டு அகற்றப்பட வேண்டும். இதனால் எந்த தரவும் மாற்றப்படாது.
Card SD கார்டை ஒரு கணினியில் செருகவும், கீழே காட்டப்பட்டுள்ளபடி 6 உரை கோப்புகளை நீங்கள் காணலாம்:

எஸ்டி கார்டு முடிவு கணினியில் சேமிக்கப்படுகிறது

ஒரு கோப்பைத் திறப்பது வேட்பாளரின் பெயர் மற்றும் வாக்குகளின் எண்ணிக்கையைக் காண்பிக்கும், இது கீழே விளக்கப்பட்டுள்ளது:

ஆசிரியரின் முன்மாதிரி:

எஸ்டி கார்டு தொகுதியின் விளக்கம்:

குறிப்பு 1: மின்சாரம் வழங்குவதில் ஏதேனும் இடையூறு ஏற்பட்டால் வாக்கு எண்ணிக்கையை பூஜ்ஜியமாக மீட்டமைக்கும்.
குறிப்பு 2: நிரலில் வேட்பாளர் பெயரை மாற்றவும்.
சரம் கட்சி 1 = 'மோடி'
சரம் கட்சி 2 = 'TRUMP'
சரம் கட்சி 3 = 'புடின்' // வேட்பாளர் பெயர்களை இங்கே வைக்கவும்.
சரம் கட்சி 4 = 'அப்துல் கலாம்'
சரம் கட்சி 5 = 'கிரிஷ்'
சரம் கட்சி 6 = 'ஸ்வகதம்'
குறிப்பு 3: ஒரு குறிப்பிட்ட கட்சி / வேட்பாளருக்கு வாக்களிக்கவில்லை என்றால், எஸ்.டி கார்டில் உரை கோப்பு தோன்றாது.

மேலே வடிவமைப்பை மேம்படுத்துதல்

மின்னணு வாக்குப்பதிவு இயந்திர திட்டத்தின் இந்த மேம்படுத்தப்பட்ட பதிப்பை இந்த வலைத்தளத்தின் தீவிர வாசகரான சுமேஷ் சவுரேசியா கோரியுள்ளார்.

இந்த திட்டம் மேலே விளக்கப்பட்ட மின்னணு வாக்குப்பதிவு இயந்திரத்தின் முன்னேற்றமாகும். மேலே உள்ள ஈ.வி.எம் (எலக்ட்ரானிக் வாக்குப்பதிவு இயந்திரம்) இன் முக்கிய குறைபாடு இதன் விளைவாக 16 x 2 எல்சிடி டிஸ்ப்ளேயில் பார்க்க முடியவில்லை, ஆனால் அதை கணினியில் மட்டுமே பார்க்க முடியும்.

இந்த திட்டத்தில் நாம் குறிப்பிட்டுள்ள டிரா பேக் கீழே சுடப் போகிறோம், புதிதாக முன்மொழியப்பட்ட வடிவமைப்பால் எல்சிடி டிஸ்ப்ளேயில் உள்ள 6 வேட்பாளர்களின் முடிவை உடனடியாகக் காணலாம்.

நாங்கள் சந்தித்த சிரமங்கள்:

முந்தைய ஈ.வி.எம் திட்டத்தின் அனைத்து உள்ளீடு / வெளியீட்டு ஊசிகளும் (அர்டுயினோவின்) 16 x 2 காட்சி, எஸ்டி கார்டு தொகுதி, வாக்கு பொத்தான்கள், கட்டுப்பாட்டு பொத்தான் மற்றும் பஸர் ஆகியவற்றால் பயன்படுத்தப்பட்டன. எந்த புதிய பொத்தானையும் இணைக்க அதிக இடம் இல்லை.

சில ஆராய்ச்சிகளுக்குப் பிறகு, எந்த I / O ஊசிகளையும் வெளியீட்டில் உள்ளீடாகவும், எந்த நேரத்திலும் நேர்மாறாகவும் மாற்றலாம் என்பதைக் கண்டறிந்தோம்.

கவனமாக கவனித்த பிறகு எல்.ஈ.டி / பஸர் முள் சேமி பொத்தானாக தேர்வு செய்தோம். இப்போது இந்த முள் உள்ளீடு (சேமி பொத்தான்) மற்றும் வெளியீடு (பஸர்) இரண்டாக திட்டமிடப்பட்டுள்ளது.

சேவ் / பஸர் முள் எந்த நேரத்திலும் மாநிலத்தில் ஒரு நேரத்தில் ஒதுக்கப்படுகிறது என்பதை நினைவில் கொள்க, அதாவது வெளியீடு அல்லது உள்ளீடு.

சுற்று:

அர்டுடினோ இணைப்புக்கு எல்சிடி:

முந்தைய திட்டங்களின்படி இணைத்து, 10K பொட்டென்டோமீட்டரைப் பயன்படுத்துவதன் மூலம் மாறுபாட்டின் சுற்றுவட்டத்தை மாற்றியமைக்க சுய விளக்கமளிக்கிறது.

எஸ் 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 கார்டை வடிவமைக்க வேண்டும் / இந்த ஈ.வி.எம் உருவாக்கிய அனைத்து கோப்புகளையும் நீக்க வேண்டும்.

இந்த ஈ.வி.எம்-க்கு தடையற்ற சக்தி தேவை என்பதை நினைவில் கொள்க, எந்தவொரு குறுக்கீடும் வாக்கு எண்ணிக்கையை பூஜ்ஜியமாக மாற்றும்.

குறியீட்டில் வேட்பாளர் பெயர்களை எழுதவும் (அதிகபட்சம் 16 எழுத்துக்கள்):

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

சரம் கட்சி 1 = 'மோடி'

சரம் கட்சி 2 = 'TRUMP'

சரம் கட்சி 3 = 'புடின்' // வேட்பாளர் பெயர்களை இங்கே வைக்கவும்.

சரம் கட்சி 4 = 'அப்துல் கலாம்'

சரம் கட்சி 5 = 'கிரிஷ்'

சரம் கட்சி 6 = 'ஸ்வகதம்'

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

இது திட்டத்தை முடிக்கிறது, இந்த திட்டம் தொடர்பாக ஏதேனும் கேள்விகள் இருந்தால், கருத்து பிரிவில் தயங்கலாம், நீங்கள் விரைவான பதிலைப் பெறலாம்.




முந்தைய: கார் டேங்க் வாட்டர் சென்சார் சர்க்யூட் அடுத்து: 3 திட-நிலை ஒற்றை ஐசி 220 வி சரிசெய்யக்கூடிய மின்சாரம் சுற்றுகள்