#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#include <ezButton.h>
#define width 128
#define height 64
Adafruit_SSD1306 display(width,height,&Wire,-1);
ezButton b1(13);
ezButton b2(33);
ezButton b3(14);
ezButton b4(27);
ezButton b5(26);
int v1=0,v2=0,v3=0,v4=0;
int flag=0;
int buttonState=0;
int votingCompleted=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
b1.setDebounceTime(25);
b2.setDebounceTime(25);
b3.setDebounceTime(25);
b4.setDebounceTime(25);
b5.setDebounceTime(25);
if (!display.begin(SSD1306_SWITCHCAPVCC,0x3C)){
Serial.print("OLED allocation failed");
}
delay(2000);
display.clearDisplay();
display.setTextSize(1.3);
display.setTextColor(WHITE);
display.setCursor(2,5);
display.println("Start Voting");
display.setCursor(2,15);
display.println("A-Blue");
display.setCursor(2,25);
display.println("B-Yellow");
display.setCursor(2,35);
display.println("C-Red");
display.setCursor(2,45);
display.println("D-Black");
display.display();
delay(2000);
Serial.print("Result will be shown, after the green button is pressed");
}
void loop() {
b1.loop();
b2.loop();
b3.loop();
b4.loop();
b5.loop();
if(votingCompleted==0){
if(b1.isPressed()){
v1++;
}
else if(b2.isPressed()){
v2++;
}
else if(b3.isPressed()){
v3++;
}
else if(b4.isPressed()){
v4++;
}
else if(b5.isPressed()){
votingCompleted=1;
voteCount();
delay(2000);
Serial.print("Voting Completed");
}
}
else{
determineWinner();
}
delay(10);
}
void voteCount(){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(1,0);
display.print("A B C D");
display.setCursor(1,20);
display.print(v1);
display.setCursor(35,20);
display.print(v2);
display.setCursor(65,20);
display.print(v3);
display.setCursor(100,20);
display.print(v4);
display.display();
}
void determineWinner(){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(1,10);
if(v1>v2 && v1>v3 && v1>v4){
display.print("A is the winner");
}
else if(v2>v1 && v2>v3 && v2>v4){
display.print("B is the winner");
}
else if(v3>v1 && v3>v2 && v3>v4){
display.print("C is the winner");
}
else if(v4>v1 && v4>v3 && v4>v2){
display.print("D is the winner");
}
else{
display.print("There was a tie, revote");
}
display.display();
}