Mesin Voting Elektronik dengan Modul Kartu SD

Coba Instrumen Kami Untuk Menghilangkan Masalah





Pada postingan kali ini kita akan membuat rangkaian Mesin Voting Elektronik dengan menggunakan modul Arduino dan SD card dimana data pemilihan disimpan di SD card.

Oleh



MEMPERBARUI:

Sirkuit ini telah ditingkatkan ke versi yang lebih baik di mana hasilnya dapat dilihat melalui layar LCD yang terpasang, Anda bisa mendapatkan detailnya di bagian bawah posting

Menggunakan Layar LCD 16x2

Layar 16 x 2 menunjukkan status mesin pemungutan suara dan ketika Anda memberikan suara, nama kandidat akan ditampilkan bersama dengan aktivasi LED dan bel.



Catatan: Proyek yang diusulkan dibuat untuk tujuan pendidikan saja dan tidak dimaksudkan untuk penggunaan pemilu yang sebenarnya.

Mesin pemungutan suara elektronik diimplementasikan untuk mempercepat proses pemilihan dan mengurangi penggunaan kertas dan alasan ini secara tidak langsung mengurangi biaya terkait pemilihan.

Mesin pemungutan suara elektronik memberikan keamanan yang unggul sebelum metode pemungutan suara kertas tradisional.

Mengangkut kotak suara massal itu berisiko daripada mengangkut mesin kompak, di mana penipuan penangkapan kendaraan tidak dapat mengubah data di EVM (Mesin pemungutan suara elektronik) meskipun dapat menangkap kendaraan.

Beberapa negara menunjukkan minat pada EVM buatan India karena keamanan yang superior. Negara-negara seperti AS masih berpegang pada metode pemungutan suara kertas tradisional untuk pemilihan mereka karena risiko yang lebih tinggi untuk meretas dan mengubah data pemilihan.

Jadi, apa yang membuat orang India membuat EVM lebih aman? Nah, AS membuat mesin pemungutan suara yang sarat dengan sistem operasi windows dan terhubung dengan server untuk memudahkan penghitungan suara. Ini membuka banyak celah bagi peretas untuk mengubah data pemilu.

EVM buatan India adalah perangkat mandiri dan tidak terhubung ke internet atau server. Untuk penghitungan suara, mesin dibawa ke bilik penghitungan, di mana hasilnya akan diumumkan dan tidak ada perantara.

Proyek yang diusulkan dirancang dengan fungsi serupa EVM India tetapi, ada banyak modifikasi yang dilakukan.

Sekarang mari beralih ke detail konstruksi proyek.

Tata Letak Sirkuit:

Diagram Tata Letak EVM

Sirkuit EVM yang diusulkan hanya bisa menampung 6 calon. Tombol kontrol disediakan mirip dengan unit kontrol di EVM nyata. Setelah seseorang memberikan suaranya, tombol surat suara akan dinonaktifkan.

Tombol pemungutan suara diaktifkan kembali hanya setelah menekan tombol kontrol. Tombol kontrol akan ditempatkan di dekat penanggung jawab yang mengontrol bilik pemilihan.

Setelah seseorang memberikan suara, dia akan diberi aktivasi LED dan bel. Orang tersebut juga dapat mengkonfirmasi suara yang dia berikan di layar, itu akan menunjukkan nama kandidat atau nama partai selama beberapa detik. Fitur ini tidak tetap ada di EVM asli.

Diagram skematik:

Arduino menampilkan konektivitas:




Sirkuit Arduino EVM untuk menampilkan konektivitas

Sirkuit dibagi menjadi dua bagian untuk menghindari kebingungan saat menduplikasi proyek. Sirkuit di atas menjelaskan kabel antara layar LCD dan arduino. Sesuaikan resistor variabel untuk kontras optimal.

Rangkaian Mesin Voting Elektronik dengan Modul SD Card dan Arduino

Berikut adalah sisa rangkaian yang terdiri dari baterai 9V, sakelar, tujuh tombol tekan, LED, bel dan yang lebih penting modul kartu SD.

Kartu SD akan menyimpan data segera setelah pemungutan suara dilakukan. Setelah pemilihan selesai, kartu SD dimasukkan ke komputer untuk mengumumkan penghitungan dan hasil suara.

Desain yang diusulkan dapat merekam hingga 4.294.967.295 (yang berarti lebih dari 4 miliar) suara per kandidat dan 25.769.803.770 (lebih dari 25 miliar yang lebih dari tiga kali populasi dunia saat ini) suara per mesin dan masih lebih dari 99,9% kartu SD masih kosong .

Ini jauh lebih efisien daripada EVM asli yang dapat mencatatkan 3.840 suara per mesin.

Program:

//--------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------//

……… Itu program yang sangat besar.

Cara mengoperasikan Sirkuit EVM ini:

• Nyalakan mesin, itu akan berbunyi bip yang menunjukkan semuanya baik-baik saja. Jika mesin tidak dalam kondisi baik, mesin berbunyi bip dengan cepat dan menampilkan pesan kesalahan pada LCD.
• Tekan tombol kontrol, sekarang siap untuk merekam satu suara.
• Setelah pemungutan suara direkam, LED akan aktif dan bip sedetik dan menampilkan nama kandidat yang Anda pilih selama beberapa detik.
• Untuk merekam pemungutan suara berikutnya, tombol kontrol harus ditekan lagi. Setiap kali tombol kontrol ditekan, bel berbunyi bip pendek sebanyak 3 kali.
• Ini harus dilanjutkan sampai pemilih terakhir memberikan suaranya. Tidak perlu menekan tombol kontrol setelah pemilih terakhir kasta memilih.
• Setelah pemungutan suara terakhir dilakukan, mesin harus segera dimatikan menggunakan sakelar mati dan kartu SD harus dilepas. Sehingga tidak ada data yang akan diubah.
• Colokkan kartu SD ke komputer dan Anda dapat melihat 6 file teks seperti yang ditunjukkan di bawah ini:

Hasil kartu SD disimpan di komputer

Membuka file akan menampilkan nama kandidat dan jumlah suara, seperti diilustrasikan di bawah ini:

Prototipe penulis:

Ilustrasi Modul kartu SD:

Catatan 1: Setiap gangguan pada catu daya akan mengatur ulang penghitungan suara ke nol.
Catatan 2: Harap ubah nama kandidat dalam program ini.
String Party1 = 'MODI'
String Party2 = 'TRUMP'
String Party3 = 'PUTIN' // Tempatkan Nama Kandidat Di Sini.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
Catatan 3: Jika tidak ada suara yang diberikan ke partai / kandidat tertentu, file teks tidak akan muncul di kartu SD.

Meningkatkan Desain Di Atas

Versi terbaru dari proyek mesin pemungutan suara elektronik ini diminta oleh Sumesh chourasia, yang merupakan pembaca setia situs web ini.

Proyek ini merupakan perbaikan dari Mesin Voting Elektronik yang dijelaskan di atas. Kelemahan utama dari EVM (Electronic Voting Machine) di atas adalah hasilnya tidak bisa dilihat di layar LCD 16 x 2, tapi hanya bisa dilihat di komputer.

Dalam proyek ini kita akan menembak ke bawah dan dengan desain baru yang diusulkan kita dapat melihat hasil dari 6 kandidat pada layar LCD secara instan.

Kesulitan yang kami temui:

Semua pin input / output (dari Arduino) dari proyek EVM sebelumnya digunakan oleh layar 16 x 2, modul kartu SD, tombol surat suara, tombol kontrol dan bel. Tidak ada lagi ruang tersisa untuk menghubungkan tombol baru.

Setelah beberapa penelitian, kami menemukan bahwa setiap pin I / O dapat diubah menjadi output menjadi input dan sebaliknya di titik mana pun.

Setelah pengamatan yang cermat kami memilih pin LED / buzzer sebagai tombol simpan. Sekarang pin ini diprogram baik sebagai input (tombol simpan) dan output (buzzer).

Perhatikan bahwa pin simpan / buzzer ditetapkan di salah satu status secara instan, yaitu keluaran atau masukan.

Sirkuit:

Koneksi LCD ke Arduino:

Cukup hubungkan sesuai skema sebelumnya dan gunakan potensiometer 10K untuk menyesuaikan tampilan kontras, sisa rangkaian sudah cukup jelas.

S1 hingga S6 adalah tombol suara yang digunakan pemilih untuk memasukkan pilihannya. Tombol simpan dan kontrol harus dijauhkan dari unit surat suara (di bawah kendali tempat pemungutan suara yang bertanggung jawab).

Program Baru:
//--------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------//

Cara mengoperasikan mesin pemungutan suara elektronik ini:

  • Dengan penyiapan perangkat keras yang lengkap, unggah kode dengan nama kandidat yang Anda inginkan.
  • Nyalakan mesin, jika semuanya baik-baik saja akan berbunyi bip panjang.
  • Sekarang tekan tombol kontrol dan sekarang dapat merekam satu suara.
  • Setelah setiap pemungutan suara, tombol kontrol harus ditekan sekali.
  • Setelah pemungutan suara terakhir diberikan, tekan tombol simpan ini akan menyimpan hasil dan meminta Anda untuk memutuskan catu daya (sehingga Anda dapat melihat hasilnya secara pribadi).
  • Sambungkan kembali pasokan itu secara otomatis akan mulai menampilkan hasilnya. Jika seorang kandidat tidak mendapatkan suara apa pun, itu akan menampilkan 'null'.
  • Untuk melakukan pemilihan lainnya, Anda harus memformat kartu SD / menghapus semua file yang dihasilkan oleh EVM ini.

Harap dicatat bahwa EVM ini membutuhkan daya tanpa gangguan, setiap gangguan akan menggulung penghitungan suara ke nol.

Harap tulis nama kandidat dalam kode (maksimal 16 huruf):

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

String Party1 = 'MODI'

String Party2 = 'TRUMP'

String Party3 = 'PUTIN' // Tempatkan Nama Kandidat Di Sini.

String Party4 = 'Abdul Kalam'

String Party5 = 'Girish'

String Party6 = 'Swagatam'

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

Itu menyimpulkan proyek, jika Anda memiliki pertanyaan tentang proyek ini, silakan ungkapkan di bagian komentar, Anda dapat menerima balasan cepat.




Sepasang: Sirkuit Sensor Air Tangki Mobil Berikutnya: 3 Sirkuit Catu Daya Adjustable Single IC 220V Solid-State