SD 카드 모듈이있는 전자 투표기

문제를 제거하기 위해 도구를 사용해보십시오





이 글에서는 선거 데이터가 SD 카드에 저장되는 Arduino와 SD 카드 모듈을 사용하여 전자 투표기 회로를 구성 할 것입니다.

으로



최신 정보:

이 회로는 연결된 LCD 디스플레이를 통해 결과를 볼 수있는 개선 된 버전으로 업그레이드되었습니다. 자세한 내용은 게시물 하단 섹션에서 확인할 수 있습니다.

16x2 LCD 디스플레이 사용

16 x 2 디스플레이에 투표기의 상태가 표시되며 투표를하면 후보자의 이름이 LED 및 부저 활성화와 함께 표시됩니다.



참고 : 제안 된 프로젝트는 교육 목적으로 만 작성되었으며 실제 선거 용이 아닙니다.

전자 투표기는 선거 과정의 속도를 높이고 사용 서류를 줄이기 위해 구현되며 이러한 이유로 선거와 관련된 비용을 간접적으로 줄입니다.

전자 투표기는 기존의 종이 투표 방식보다 우수한 보안을 제공합니다.

이러한 대량 투표함을 운송하는 것은 소형 기계를 운송하는 것보다 위험합니다. 차량 캡처 사기는 차량을 캡처 할 수 있더라도 EVM (전자 투표 기계)의 데이터를 변경할 수 없습니다.

일부 국가는 우수한 보안으로 인해 인도산 EVM에 관심을 보이고 있습니다. 미국과 같은 국가는 선거 데이터를 해킹하고 변경할 위험이 높기 때문에 여전히 기존의 종이 투표 방법을 고수하고 있습니다.

그렇다면 인디언이 EVM을 더 안전하게 만든 이유는 무엇입니까? 글쎄, 미국은 투표 수를 쉽게 계산할 수 있도록 Windows 운영 체제를 탑재하고 서버와 네트워크로 연결된 투표 기계를 만들었습니다. 이것은 해커가 선거 데이터를 변경할 수있는 많은 허점을 열어줍니다.

인도산 EVM은 독립형 장치이며 인터넷이나 서버에 연결되지 않습니다. 투표를 계산하기 위해 기계는 계산 부스로 옮겨져 결과가 선언되고 중개인은 없습니다.

제안 된 프로젝트는 인도 EVM과 유사한 기능으로 설계되었지만 많은 수정이 이루어졌습니다.

이제 프로젝트의 구조적 세부 사항으로 이동하겠습니다.

회로 레이아웃 :

EVM 레이아웃 다이어그램

제안 된 EVM 회로는 6 개의 후보 만 수용 할 수 있습니다. 실제 EVM의 제어 장치와 유사한 제어 버튼이 제공됩니다. 한 사람이 투표를 한 후에는 투표 버튼이 비활성화됩니다.

투표 버튼은 제어 버튼을 누른 후에 만 ​​다시 활성화됩니다. 제어 버튼은 선거 부스를 관리하는 담당자 근처에 배치됩니다.

투표를 한 사람은 LED와 부저가 활성화되어 확인됩니다. 그 사람은 또한 자신이 던진 투표를 디스플레이에서 확인할 수 있으며, 후보 이름이나 정당 이름이 몇 초 동안 표시됩니다. 이 기능은 실제 EVM에 여전히 존재하지 않습니다.

개략도:

연결을 표시하는 Arduino :




연결 표시를위한 Arduino EVM 회로

회로는 프로젝트를 복제하는 동안 혼동을 피하기 위해 두 부분으로 나뉩니다. 위의 회로는 LCD 디스플레이와 arduino 간의 배선을 설명합니다. 최적의 대비를 위해 가변 저항을 조정하십시오.

SD 카드 모듈 및 Arduino가있는 전자 투표기 회로

다음은 9V 배터리, 스위치, 7 개의 푸시 버튼, LED, 부저 및 더 중요한 SD 카드 모듈로 구성된 나머지 회로입니다.

SD 카드는 투표 후 즉시 데이터를 저장합니다. 선거가 끝나면 SD 카드를 컴퓨터에 삽입하여 투표 수와 결과를 선언합니다.

제안 된 디자인은 후보 당 최대 4,294,967,295 (40 억 이상) 투표를 기록하고 25,769,803,770 (현재 세계 인구의 3 배 이상인 250 억 이상) 투표를 기록 할 수 있으며 여전히 99.9 % 이상의 SD 카드가 비어 있습니다. .

이는 머신 당 3840 표를 기록 할 수있는 실제 EVM보다 훨씬 효율적입니다.

프로그램:

//--------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 회로를 작동하는 방법 :

• 기기를 켜면 모든 것이 정상임을 알리는 신호음이 울립니다. 기기가 이상 할 경우 경고음이 빠르게 울리고 LCD에 오류 메시지가 표시됩니다.
• 제어 버튼을 누르면 이제 하나의 투표를 기록 할 준비가되었습니다.
• 투표가 기록되면 LED가 활성화되고 1 초 동안 신호음이 울리고 몇 초 동안 투표 한 후보자의 이름이 표시됩니다.
• 다음 투표를 기록하려면 제어 버튼을 다시 눌러야합니다. 제어 버튼을 누를 때마다 부저가 3 번 짧게 울립니다.
• 이것은 마지막 투표자가 투표 할 때까지 계속되어야합니다. 마지막 투표자가 투표를 한 후 제어 버튼을 누를 필요가 없습니다.
• 마지막 투표가 끝나면 즉시 전원을 끄고 SD 카드를 제거해야합니다. 따라서 데이터가 변경되지 않습니다.
• SD 카드를 컴퓨터에 연결하면 아래와 같이 6 개의 텍스트 파일을 볼 수 있습니다.

컴퓨터에 저장된 SD 카드 결과

파일을 열면 아래 그림과 같이 후보자의 이름과 투표 수가 표시됩니다.

저자의 프로토 타입 :

SD 카드 모듈 그림 :

참고 1 : 전원 공급이 중단되면 투표 수가 0으로 재설정됩니다.
참고 2 : 프로그램에서 후보자 이름을 변경하십시오.
문자열 Party1 = 'MODI'
문자열 Party2 = 'TRUMP'
String Party3 = 'PUTIN'// 후보 이름을 여기에 배치합니다.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
참고 3 : 특정 정당 / 후보에게 투표하지 않으면 텍스트 파일이 SD 카드에 표시되지 않습니다.

위의 디자인 업그레이드

이 특정 업그레이드 버전의 전자 투표 기계 프로젝트는이 웹 사이트의 열렬한 독자 인 Sumesh chourasia가 요청했습니다.

이 프로젝트는 위에서 설명한 전자 투표 기계를 개선 한 것입니다. 위의 EVM (Electronic Voting Machine)의 가장 큰 단점은 결과를 16 x 2 LCD 디스플레이에서는 볼 수 없지만 컴퓨터에서만 볼 수 있다는 것입니다.

이 프로젝트에서 우리는 언급 된 결점을 제거하고 새로 제안 된 디자인으로 LCD 디스플레이에서 6 개의 후보의 결과를 즉시 볼 수 있습니다.

우리가 직면 한 어려움 :

이전 EVM 프로젝트의 모든 입력 / 출력 핀 (Arduino)은 16 x 2 디스플레이, SD 카드 모듈, 투표 버튼, 제어 버튼 및 부저에 의해 사용되었습니다. 새 버튼을 연결할 수있는 공간이 더 이상 없습니다.

몇 가지 연구 끝에 우리는 모든 I / O 핀이 어느 시점에서든 입력에서 출력으로 또는 그 반대로 변경 될 수 있음을 발견했습니다.

주의 깊게 관찰 한 후 저장 버튼으로 LED / 부저 핀을 선택했습니다. 이제이 핀은 입력 (저장 버튼)과 출력 (부저)으로 프로그래밍되었습니다.

저장 / 부저 핀은 즉시 상태, 즉 출력 또는 입력 중 하나에 할당됩니다.

회로 :

LCD와 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'로 표시됩니다.
  • 다른 선택을 수행하려면 SD 카드를 포맷하고이 EVM에서 생성 된 모든 파일을 삭제해야합니다.

이 EVM은 무정전 전원이 필요하며, 모든 중단은 투표 수를 0으로 롤링합니다.

코드에 후보자 이름을 작성하십시오 (최대 16 자) :

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

문자열 Party1 = 'MODI'

문자열 Party2 = 'TRUMP'

String Party3 = 'PUTIN'// 후보 이름을 여기에 배치합니다.

String Party4 = 'Abdul Kalam'

String Party5 = 'Girish'

String Party6 = 'Swagatam'

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

이것으로 프로젝트가 끝났고,이 프로젝트에 대한 질문이 있으시면 언제든지 코멘트 섹션에 표현해 주시면 빠른 답변을 받으실 수 있습니다.




이전 : 자동차 탱크 물 센서 회로 다음 : 3 개의 솔리드 스테이트 단일 IC 220V 가변 전원 공급 장치 회로