SD Kart Modüllü Elektronik Oylama Makinesi

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu yazıda, seçim verilerinin SD kartta saklandığı Arduino ve SD kart modülünü kullanarak bir Elektronik Oylama Makinesi için bir devre oluşturacağız.

Tarafından



GÜNCELLEME:

Bu devre, sonuçların ekli bir LCD ekran üzerinden görüntülenebileceği geliştirilmiş bir sürüme yükseltilmiştir, ayrıntıları yazının alt bölümünde görebilirsiniz.

16x2 LCD Ekran Kullanımı

16 x 2'lik bir ekran, oylama makinesinin durumunu gösterir ve oyunuzu verdiğinizde, adayın adı LED ve sesli uyarının etkinleştirilmesiyle birlikte görüntülenir.



Not: Önerilen proje yalnızca eğitim amaçlı yapılmıştır ve gerçek seçim kullanımı için tasarlanmamıştır.

Seçim sürecini hızlandırmak ve kağıt kullanımını azaltmak için elektronik oylama makineleri uygulanmakta ve bu nedenler dolaylı olarak seçimlerle ilgili masrafları azaltmaktadır.

Elektronik oylama makineleri, geleneksel kağıt oylama yönteminden önce üstün güvenlik sağlar.

Bu toplu oy sandıklarını taşımak, araç ele geçirme dolandırıcılıklarının, araç ele geçirilse bile EVM'deki (Elektronik Oylama Makinesi) verileri değiştiremediği kompakt makinelerin taşınmasından daha risklidir.

Bazı ülkeler, üstün güvenlik nedeniyle Hindistan yapımı EVM'lere ilgi gösteriyor. ABD gibi ülkeler, seçim verilerini hackleme ve değiştirme riskinin daha yüksek olması nedeniyle, seçimleri için geleneksel kağıt oylama yöntemini kullanmaya devam ediyor.

Öyleyse, Kızılderilileri EVM'leri daha güvenli yapan nedir? ABD, Windows işletim sistemi yüklü oylama makineleri yaptı ve oyların sayılmasını kolaylaştırmak için sunucularla ağa bağlandı. Bu, bilgisayar korsanlarının seçim verilerini değiştirmesi için birçok boşluk açar.

Hint yapımı EVM'ler bağımsız cihazlardır ve internete veya sunuculara bağlı değildir. Oyları saymak için makineler, sonuçların ilan edileceği ve aracı olmayan sayım kabinine taşınır.

Önerilen proje, Hint EVM'lerinin benzer işlevselliği ile tasarlandı, ancak yapılan birçok değişiklik var.

Şimdi projenin yapısal detaylarına geçelim.

Devre Düzeni:

EVM Yerleşim Şeması

Önerilen EVM devresi yalnızca 6 adayı barındırabilir. Gerçek EVM'lerde kontrol ünitesine benzer bir kontrol düğmesi sağlanır. Bir kişi oyunu sınıflandırdıktan sonra, sandık düğmeleri devre dışı kalır.

Oy pusulası düğmeleri ancak kontrol düğmesine basıldıktan sonra yeniden etkinleştirilir. Kontrol düğmesi, seçim kabinini kontrol eden sorumlu kişinin yanına yerleştirilecektir.

Bir kişi oy verdikten sonra LED ve sesli uyarının etkinleştirilmesi ile onaylanır. Kişi aynı zamanda ekranda yaptığı oylamayı onaylayabilir, aday adını veya parti adını birkaç saniye gösterecektir. Bu özellik gerçek EVM'lerde hala mevcut değildir.

Şematik diyagram:

Bağlantı görüntüleyen arduino:




Bağlantıyı görüntülemek için Arduino EVM devresi

Devre, projeyi kopyalarken kafa karışıklıklarını önlemek için iki bölüme ayrılmıştır. Yukarıdaki devre, LCD ekran ile arduino arasındaki kablolamayı açıklar. Optimum kontrast için değişken direnci ayarlayın.

SD Kart Modülü ve Arduino ile Elektronik Oylama Makinesi Devresi

İşte 9V pil, switch, yedi buton, LED, buzzer ve daha da önemlisi SD kart modülünden oluşan devrenin geri kalanı.

SD kart, oylama yapıldıktan hemen sonra verileri saklayacaktır. Seçim bittikten sonra SD kart, oy sayımını ve sonucunu bildirmek için bilgisayara takılır.

Önerilen tasarım, aday başına 4.294.967.295 oy (ki bu 4 milyardan fazla) ve makine başına 25.769.803.770 (25 milyardan fazla, mevcut dünya nüfusunun üç katından fazla) oy kaydedebilir ve hala% 99,9'dan fazla SD kart hala boş .

Bu, makine başına 3840 oy kaydedebilen gerçek EVM'lerden çok daha verimlidir.

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

……… Bu muazzam bir program.

Bu EVM Devresi nasıl çalıştırılır:

• Makineyi AÇIN, her şeyin yolunda olduğunu belirten bir bip sesi ile onaylayacaktır. Makine iyi değilse, hızlı bir şekilde bip sesi çıkarır ve LCD'de hata mesajını görüntüler.
• Kontrol düğmesine basın, artık bir oy kaydetmeye hazırdır.
• Oylama kaydedildikten sonra LED'i etkinleştirecek ve bir saniye bip sesi çıkaracak ve birkaç saniye oy verdiğiniz adayın adını gösterecektir.
• Sonraki oylamayı kaydetmek için kontrol düğmesine tekrar basılması gerekir. Kontrol düğmesine her basıldığında, sesli uyarı 3 kısa bip sesi verir.
• Bu, son seçmen oylarını kullanana kadar devam etmelidir. Son seçmen oylamayı kastettikten sonra kontrol düğmesine basmaya gerek yok.
• Son oylama yapıldıktan sonra, makine derhal kapatma düğmesi kullanılarak kapatılmalı ve SD kart çıkarılmalıdır. Böylece hiçbir veri değiştirilmeyecek.
• SD kartı bir bilgisayara takın ve aşağıda gösterildiği gibi 6 metin dosyasını görebilirsiniz:

Bilgisayarda depolanan SD kart sonucu

Bir dosyanın açılması, aşağıda gösterildiği gibi adayın adını ve oy sayısını gösterecektir:

Yazarın prototipi:

SD kart Modülünün Resmi:

Not 1: Güç kaynağındaki herhangi bir kesinti, oy sayısını sıfırlayacaktır.
Not 2: Lütfen programdaki aday adını değiştiriniz.
String Party1 = 'MODI'
String Party2 = 'TRUMP'
String Party3 = 'PUTIN' // Aday Adlarını Buraya Yerleştirin.
String Party4 = 'Abdul Kalam'
String Party5 = 'Girish'
String Party6 = 'Swagatam'
Not 3: Belirli bir partiye / adaya oy verilmezse metin dosyası SD kartta görünmeyecektir.

Yukarıdaki Tasarımı Yükseltmek

Elektronik oylama makinesi projesinin bu özel yükseltilmiş versiyonu, bu web sitesinin hevesli bir okuyucusu olan Sumesh chourasia tarafından talep edildi.

Bu proje, yukarıda açıklanan Elektronik Oylama Makinesi üzerinde bir gelişmedir. Yukarıdaki EVM'nin (Elektronik Oylama Makinesi) ana dezavantajı, sonucun 16 x 2 LCD ekranda görüntülenememesi, ancak yalnızca bilgisayarda görüntülenebilmesiydi.

Bu projede söz konusu çekilişi çekip yeni önerilen tasarım ile 6 adayın sonucunu anlık olarak LCD ekranda görüntüleyebiliyoruz.

Karşılaştığımız zorluklar:

Önceki EVM projesinin tüm giriş / çıkış pinleri (Arduino'nun) 16 x 2 ekran, SD kart modülü, oy pusulası düğmeleri, kontrol düğmesi ve zil ile kullanıldı. Yeni bir düğmeyi bağlamak için yer kalmadı.

Biraz araştırmadan sonra, herhangi bir noktada herhangi bir G / Ç pininin girişe çıkış olarak değiştirilebileceğini ve bunun tersi olduğunu bulduk.

Dikkatli bir gözlemden sonra LED / buzzer pimini kaydetme düğmesi olarak seçtik. Şimdi bu pin hem giriş (kaydetme düğmesi) hem de çıkış (zil) olarak programlanmıştır.

Kaydetme / buzzer pininin herhangi bir durumda bir anda, yani çıkış veya girişte atandığına dikkat edin.

Devre:

LCD'den Arduino'ya bağlantı:

Sadece önceki şemalara göre bağlanın ve devrenin geri kalanının görüntülenmesi kontrastını ayarlamak için 10K potansiyometre kullanın.

S1 ila S6, seçmenlerin seçimlerini girdikleri seçim düğmeleridir. Kaydet ve kontrol düğmesi sandıktan uzak tutulmalıdır (görevli sandık odasının kontrolü altında).

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

Bu Elektronik oylama makinesi nasıl çalıştırılır:

  • Donanım kurulumu tamamlandıktan sonra, kodu arzu ettiğiniz aday isimleriyle yükleyin.
  • Makineyi açın, her şey yolundaysa uzun bir bip sesi verecektir.
  • Şimdi kontrol düğmesine basın ve artık tek bir oylama kaydedebilir.
  • Her oylamadan sonra kontrol düğmesine bir kez basılmalıdır.
  • Son oylama yapıldıktan sonra, kaydet düğmesine basın, bu, sonuçları kaydedecek ve sizden güç kaynağının bağlantısını kesmenizi isteyecektir (böylece sonuçları özel olarak görüntüleyebilirsiniz).
  • Kaynağı tekrar bağlayın, sonuçları otomatik olarak göstermeye başlayacaktır. Aday oy alamazsa 'boş' olarak görüntülenir.
  • Başka bir seçim yapmak için, SD kartı formatlamanız / bu EVM tarafından oluşturulan tüm dosyaları silmeniz gerekir.

Lütfen bu EVM'nin kesintisiz güce ihtiyacı olduğunu unutmayın, herhangi bir kesinti oy sayısını sıfıra indirecektir.

Lütfen aday isimlerini koda yazınız (en fazla 16 harf):

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

String Party1 = 'MODI'

String Party2 = 'TRUMP'

String Party3 = 'PUTIN' // Aday Adlarını Buraya Yerleştirin.

String Party4 = 'Abdul Kalam'

String Party5 = 'Girish'

String Party6 = 'Swagatam'

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

Böylece proje biter, bu projeyle ilgili herhangi bir sorunuz varsa yorum bölümünde ifade etmekten çekinmeyin, hızlı bir yanıt alabilirsiniz.




Bir çift: Araba Tankı Su Sensörü Devresi Sonraki: 3 Katı Hal Tek IC 220V Ayarlanabilir Güç Kaynağı Devreleri