#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
String displayString;
const int PushButton1 = 15;
const int PushButton2 = 0;
const int PushButton3 = 4;
const int PushButton4 = 5;
const int PushButton5 = 19;
int LatchPin = 26;
int clockPin = 17;
int DataPin = 16;
int digitOne[10] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int digitTwo[10] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int digitA1,digitA2,digitB1,digitB2;
int TeamA;
int TeamB;
void setup()
{
pinMode(PushButton1, INPUT);
pinMode(PushButton2, INPUT);
pinMode(PushButton3, INPUT);
pinMode(PushButton4, INPUT);
pinMode(PushButton5, INPUT);
pinMode(LatchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(DataPin, OUTPUT);
TeamA = 0;
TeamB = 0;
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(27, 10);
display.println("-Score-");
display.setCursor(38, 30);
display.println("Broad");
display.display();
delay(4000);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(5, 20);
display.println("Loading...");
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 10);
display.print("Team A = ");
display.println(TeamA);
display.setCursor(0, 35);
display.print("Team B = ");
display.println(TeamB);
display.display();
display7segment();
}
void loop()
{
int Push_button_state1 = digitalRead(PushButton1);
int Push_button_state2 = digitalRead(PushButton2);
int Push_button_state3 = digitalRead(PushButton3);
int Push_button_state4 = digitalRead(PushButton4);
int Push_button_state5 = digitalRead(PushButton5);
//-------------------------- Switch 1 ------------------------// 1
if ( Push_button_state1 == HIGH )
{
TeamA++;
Serial.print("Score Team A +1 = ");
Serial.println(TeamA);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.print("Team A = ");
display.println(TeamA);
display.setCursor(0, 35);
display.print("Team B = ");
display.println(TeamB);
display7segment();
display.display();
delay(300);
}
//-------------------------- Switch 2 ------------------------// 2
if ( Push_button_state2 == HIGH )
{
TeamA--;
if(TeamA<0)
{
TeamA=0;
}
Serial.print("Score Team A -1 = ");
Serial.println(TeamA);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.print("Team A = ");
display.println(TeamA);
display.setCursor(0, 35);
display.print("Team B = ");
display.println(TeamB);
display.display();
display7segment();
delay(300);
}
//-------------------------- Switch 3 ------------------------// 3
if ( Push_button_state3 == HIGH )
{
TeamA = 0;
TeamB = 0;
Serial.println("====== Clear Score ======");
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.print("Team A = ");
display.println(TeamA);
display.setCursor(0, 35);
display.print("Team B = ");
display.println(TeamB);
display.display();
display7segment();
delay(300);
}
//-------------------------- Switch 4 ------------------------// 4
if ( Push_button_state4 == HIGH )
{
TeamB++;
Serial.print("Score Team B +1 = ");
Serial.println(TeamB);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.print("Team A = ");
display.println(TeamA);
display.setCursor(0, 35);
display.print("Team B = ");
display.println(TeamB);
display.display();
display7segment();
delay(300);
}
//-------------------------- Switch 5 ------------------------// 5
if ( Push_button_state5 == HIGH )
{
TeamB--;
if(TeamB<0)
{
TeamB=0;
}
Serial.print("Score Team B -1 = ");
Serial.println(TeamB);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.print("Team A = ");
display.println(TeamA);
display.setCursor(0, 35);
display.print("Team B = ");
display.println(TeamB);
display.display();
display7segment();
delay(300);
}
digitA1 = TeamA/10;
digitA2 = TeamA%10;
digitB1 = TeamB/10;
digitB2 = TeamB%10;
display.display();
display7segment();
}
void display7segment()
{
digitalWrite(LatchPin,LOW);
shiftOut(DataPin,clockPin, MSBFIRST,digitOne[digitB2]);
shiftOut(DataPin,clockPin, MSBFIRST,digitOne[digitB1]);
shiftOut(DataPin,clockPin, MSBFIRST,digitOne[digitA2]);
shiftOut(DataPin,clockPin, MSBFIRST,digitOne[digitA1]);
digitalWrite(LatchPin,HIGH);
}