Created
May 3, 2019 19:05
-
-
Save dev-ritik/1671688116035217eec64fbaa8128fc9 to your computer and use it in GitHub Desktop.
The code for 4 switch voting machine with buzzer on Raspberry Pi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<wiringPi.h> | |
#include<stdio.h> | |
#define RS 11 | |
#define EN 10 | |
#define D4 6 | |
#define D5 5 | |
#define D6 4 | |
#define D7 1 | |
#define led1 14 | |
#define led2 26 | |
#define led3 16 | |
#define led4 28 | |
#define led5 29 //green | |
#define buzz 13 | |
#define in1 21 | |
#define in2 22 | |
#define in3 23 | |
#define in4 24 | |
#define in5 25 | |
int vote1=0,vote2=0,vote3=0,vote4=0; | |
int i=0; | |
char vote[5]; | |
void compare(); | |
void show(); | |
void lcdcmd(unsigned char ch) | |
{ | |
int temp=0x80; | |
digitalWrite(D4, temp & ch<<3); | |
digitalWrite(D5, temp & ch<<2); | |
digitalWrite(D6, temp & ch<<1); | |
digitalWrite(D7, temp & ch); | |
digitalWrite(RS, LOW); | |
digitalWrite(EN, HIGH); | |
delay(10); | |
digitalWrite(EN, LOW); | |
digitalWrite(D4, temp & ch<<7); | |
digitalWrite(D5, temp & ch<<6); | |
digitalWrite(D6, temp & ch<<5); | |
digitalWrite(D7, temp & ch<<4); | |
digitalWrite(RS, LOW); | |
digitalWrite(EN, HIGH); | |
delay(10); | |
digitalWrite(EN, LOW); | |
} | |
void write(unsigned char ch) | |
{ | |
int temp=0x80; | |
digitalWrite(D4, temp & ch<<3); | |
digitalWrite(D5, temp & ch<<2); | |
digitalWrite(D6, temp & ch<<1); | |
digitalWrite(D7, temp & ch); | |
digitalWrite(RS, HIGH); | |
digitalWrite(EN, HIGH); | |
delay(10); | |
digitalWrite(EN, LOW); | |
digitalWrite(D4, temp & ch<<7); | |
digitalWrite(D5, temp & ch<<6); | |
digitalWrite(D6, temp & ch<<5); | |
digitalWrite(D7, temp & ch<<4); | |
digitalWrite(RS, HIGH); | |
digitalWrite(EN, HIGH); | |
delay(10); | |
digitalWrite(EN, LOW); | |
} | |
void clear() | |
{ | |
lcdcmd(0x01); | |
} | |
void setCursor(int x, int y) | |
{ | |
int set=0; | |
if(y==0) | |
set=128+x; | |
if(y==1) | |
set=192+x; | |
lcdcmd(set); | |
} | |
void print(unsigned char *str) | |
{ | |
while(*str) | |
{ | |
write(*str); | |
str++; | |
} | |
} | |
void begin(int x, int y) | |
{ | |
lcdcmd(0x02); | |
lcdcmd(0x28); | |
lcdcmd(0x06); | |
lcdcmd(0x0e); | |
lcdcmd(0x01); | |
} | |
void setup() | |
{ | |
if(wiringPiSetup()==-1) | |
printf("ERROR\n"); | |
pinMode(led1, OUTPUT); | |
pinMode(led2, OUTPUT); | |
pinMode(led3, OUTPUT); | |
pinMode(led4, OUTPUT); | |
pinMode(led5, OUTPUT); | |
pinMode(buzz, OUTPUT); | |
pinMode(RS, OUTPUT); | |
pinMode(EN, OUTPUT); | |
pinMode(D4, OUTPUT); | |
pinMode(D5, OUTPUT); | |
pinMode(D6, OUTPUT); | |
pinMode(D7, OUTPUT); | |
pinMode(in1, INPUT); | |
pinMode(in2, INPUT); | |
pinMode(in3, INPUT); | |
pinMode(in4, INPUT); | |
pinMode(in5, INPUT); | |
digitalWrite(in1, HIGH); | |
digitalWrite(in2, HIGH); | |
digitalWrite(in3, HIGH); | |
digitalWrite(in4, HIGH); | |
digitalWrite(in5, HIGH); | |
begin(16,2); | |
} | |
void buzzer() | |
{ | |
digitalWrite(buzz, HIGH); | |
delay(200); | |
digitalWrite(buzz, LOW); | |
} | |
void wait() | |
{ | |
digitalWrite(led5, LOW); | |
delay(200); | |
} | |
void main() | |
{ | |
setup(); | |
printf("Electronic Voting\n"); | |
print("Electronic Voting"); | |
setCursor(0,1); | |
printf("Machine with RPI\n"); | |
print("Machine with RPI"); | |
delay(2000); | |
clear(); | |
printf("Vote is fun\n"); | |
print("Vote is fun"); | |
setCursor(0,1); | |
printf("Welcomes You\n"); | |
print("Welcomes You"); | |
delay(2000); | |
clear(); | |
show(); | |
while(1) | |
{ | |
digitalWrite(led5, HIGH); | |
digitalWrite(in3, HIGH); | |
if(digitalRead(in1)==0) | |
{ | |
printf("Button1\n"); | |
++vote1; | |
digitalWrite(led1, HIGH); | |
buzzer(); | |
digitalWrite(led1, LOW); | |
wait(); | |
show(); | |
} | |
if(digitalRead(in2)==0) | |
{ | |
printf("Button2\n"); | |
++vote2; | |
digitalWrite(led2, HIGH); | |
buzzer(); | |
digitalWrite(led2, LOW); | |
wait(); | |
show(); | |
while(digitalRead(in2)==0); | |
} | |
else if(digitalRead(in3)==0) | |
{ | |
printf("Button3\n"); | |
++vote3; | |
digitalWrite(led3, HIGH); | |
buzzer(); | |
digitalWrite(led3, LOW); | |
wait(); | |
show(); | |
while(digitalRead(in3)==0); | |
} | |
else if(digitalRead(in4)==0) | |
{ | |
printf("Button4\n"); | |
++vote4; | |
digitalWrite(led4, HIGH); | |
buzzer(); | |
digitalWrite(led4, LOW); | |
wait(); | |
show(); | |
while(digitalRead(in4)==0); | |
} | |
else if(digitalRead(in5)==0) | |
{ | |
printf("Button5\n"); | |
compare(); | |
while(digitalRead(in5)==0); | |
} | |
} | |
} | |
void show() | |
{ | |
setCursor(0,0); | |
printf("P1 P2 P3 P4\n"); | |
print("P1 P2 P3 P4"); | |
setCursor(1,1); | |
sprintf(vote,"%d",vote1); | |
print(vote); | |
printf("%d ",vote1); | |
setCursor(6,1); | |
sprintf(vote,"%d",vote2); | |
print(vote); | |
printf("%d ",vote2); | |
setCursor(10,1); | |
sprintf(vote,"%d",vote3); | |
print(vote); | |
printf("%d ",vote3); | |
setCursor(14,1); | |
sprintf(vote,"%d",vote4); | |
print(vote); | |
printf("%d ",vote4); | |
delay(100); | |
} | |
void compare() | |
{ | |
clear(); | |
printf("Please Wait....\n"); | |
wait(); | |
if(vote1 > vote2 && vote1>vote3 && vote1>vote4) | |
{ | |
digitalWrite(led1, HIGH); | |
for(i=0;i<1;i++) | |
{ | |
clear(); | |
setCursor(0,0); | |
printf("Congratulations.......\n"); | |
print("Congratulations......."); | |
setCursor(0,1); | |
printf("P1 Won election\n"); | |
print("P1 Won election"); | |
delay(2000); | |
clear(); | |
setCursor(0,0); | |
printf("P1 P2 P3 P4\n"); | |
print("P1 P2 P3 P4"); | |
setCursor(1,1); | |
sprintf(vote,"%d",vote1); | |
print(vote); | |
printf("%d ",vote1); | |
setCursor(6,1); | |
sprintf(vote,"%d",vote2); | |
print(vote); | |
printf("%d ",vote2); | |
setCursor(10,1); | |
sprintf(vote,"%d",vote3); | |
print(vote); | |
printf("%d ",vote3); | |
setCursor(14,1); | |
sprintf(vote,"%d",vote4); | |
print(vote); | |
printf("%d ",vote4); | |
delay(2000); | |
} | |
digitalWrite(led1, LOW); | |
} | |
else if(vote2 >vote1 && vote2>vote3 && vote2>vote4) | |
{ | |
digitalWrite(led2, HIGH); | |
for(i=0;i<1;i++) | |
{ | |
clear(); | |
setCursor(0,0); | |
printf("Congratulations.......\n"); | |
print("Congratulations......."); | |
setCursor(0,1); | |
printf("P2 Won election\n"); | |
print("P2 Won election"); | |
delay(2000); | |
clear(); | |
setCursor(0,0); | |
printf("P1 P2 P3 P4\n"); | |
print("P1 P2 P3 P4"); | |
setCursor(1,1); | |
sprintf(vote,"%d",vote1); | |
print(vote); | |
printf("%d ",vote1); | |
setCursor(6,1); | |
sprintf(vote,"%d",vote2); | |
print(vote); | |
printf("%d ",vote2); | |
setCursor(10,1); | |
sprintf(vote,"%d",vote3); | |
print(vote); | |
printf("%d ",vote3); | |
setCursor(14,1); | |
sprintf(vote,"%d",vote4); | |
print(vote); | |
printf("%d ",vote4); | |
delay(2000); | |
} | |
digitalWrite(led2, LOW); | |
} | |
else if(vote3 > vote2 && vote3>vote1 && vote3>vote4) | |
{ | |
digitalWrite(led3, HIGH); | |
for(i=0;i<1;i++) | |
{ | |
clear(); | |
setCursor(0,0); | |
printf("Congratulations.......\n"); | |
print("Congratulations......."); | |
setCursor(0,1); | |
printf("P3 Won election\n"); | |
print("P3 Won election"); | |
delay(2000); | |
clear(); | |
setCursor(0,0); | |
printf("P1 P2 P3 P4\n"); | |
print("P1 P2 P3 P4"); | |
setCursor(1,1); | |
sprintf(vote,"%d",vote1); | |
print(vote); | |
printf("%d ",vote1); | |
setCursor(6,1); | |
sprintf(vote,"%d",vote2); | |
print(vote); | |
printf("%d ",vote2); | |
setCursor(10,1); | |
sprintf(vote,"%d",vote3); | |
print(vote); | |
printf("%d ",vote3); | |
setCursor(14,1); | |
sprintf(vote,"%d",vote4); | |
print(vote); | |
printf("%d ",vote4); | |
delay(2000); | |
} | |
digitalWrite(led3, LOW); | |
} | |
else if(vote4 > vote2 && vote4>vote3 && vote4>vote1) | |
{ | |
digitalWrite(led4, HIGH); | |
for(i=0;i<1;i++) | |
{ | |
clear(); | |
setCursor(0,0); | |
printf("Congratulations.......\n"); | |
print("Congratulations......."); | |
setCursor(0,1); | |
printf("P4 Won election\n"); | |
print("P4 Won election"); | |
delay(2000); | |
clear(); | |
printf("P1 P2 P3 P4\n"); | |
print("P1 P2 P3 P4"); | |
setCursor(1,1); | |
sprintf(vote,"%d",vote1); | |
print(vote); | |
printf("%d ",vote1); | |
setCursor(6,1); | |
sprintf(vote,"%d",vote2); | |
print(vote); | |
printf("%d ",vote2); | |
setCursor(10,1); | |
sprintf(vote,"%d",vote3); | |
print(vote); | |
printf("%d ",vote3); | |
setCursor(14,1); | |
sprintf(vote,"%d",vote4); | |
print(vote); | |
printf("%d ",vote4); | |
delay(2000); | |
} | |
digitalWrite(led4, LOW); | |
} | |
else | |
{ | |
for(i=0;i<1;i++) | |
{ | |
clear(); | |
setCursor(0,0); | |
printf("Tie Between Two\n"); | |
print("Tie Between Two"); | |
setCursor(0,1); | |
printf("or more Parties\n"); | |
print("or more Parties"); | |
delay(2000); | |
clear(); | |
printf("P1 P2 P3 P4\n"); | |
print("P1 P2 P3 P4"); | |
setCursor(1,1); | |
sprintf(vote,"%d",vote1); | |
print(vote); | |
printf("%d ",vote1); | |
setCursor(6,1); | |
sprintf(vote,"%d",vote2); | |
print(vote); | |
printf("%d ",vote2); | |
setCursor(10,1); | |
sprintf(vote,"%d",vote3); | |
print(vote); | |
printf("%d ",vote3); | |
setCursor(14,1); | |
sprintf(vote,"%d",vote4); | |
print(vote); | |
printf("%d ",vote4); | |
delay(2000); | |
} | |
} | |
vote1=0; | |
vote2=0; | |
vote3=0; | |
vote4=0; | |
clear(); | |
show(); | |
} |
Author
dev-ritik
commented
Jul 4, 2020
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment