// C++ code
//
int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
int DP = 9;
int digit_1 = 10;
int digit_2 = 11;
int digit_3 = 12;
int tim_A = 13;
int tim_B = A0;
int tim_C = A1;
int pin_reset = A2;
int pin_benar = A3;
int pin_salah = A4;
int skor_A[2] = {0,0};
int skor_B[2] = {0,0};
int skor_C[2] = {0,0};
void setup()
{
Serial.begin(9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
digitalWrite(DP ,HIGH);
pinMode(digit_1, OUTPUT);
pinMode(digit_2, OUTPUT);
pinMode(digit_3, OUTPUT);
pinMode(tim_A, INPUT_PULLUP);
pinMode(tim_B, INPUT_PULLUP);
pinMode(tim_C, INPUT_PULLUP);
pinMode(pin_reset, INPUT_PULLUP);
pinMode(pin_benar, INPUT_PULLUP);
pinMode(pin_salah, INPUT_PULLUP);
}
int count = 0;
void loop()
{
if(count == 0)
tampil_awal();
if (digitalRead(pin_reset)==HIGH)
{
count = 1;
}
if (count == 1)
{
tampil_tim();
}
if (digitalRead(tim_A) == HIGH && count == 1)//count != 20 || count != 30)
{
count = 10;
}
else if(digitalRead(tim_B) == HIGH && count == 1)//!= 10 || count != 30)
{
count = 20;
}
else if (digitalRead(tim_C) == HIGH && count == 1)//!= 10 || count != 20)
{
count = 30;
}
if (count == 10)
{
tampil_full('a',skor_A[1],skor_A[0]);
if (digitalRead(pin_benar)==HIGH)
{
count = 11;
delay(1000);
skor_A[0] += 2;
if (skor_A[0] >=10)
{
skor_A[0] -= 10;
skor_A[1] += 1;
}
count = 10;
}
else if(digitalRead(pin_salah) == HIGH)
{
count = 11;
delay(1000);
if (skor_A[1] >= 1)
{
if (skor_A[0] <= 0)
{
skor_A[1] -= 1;
skor_A[0] = 9;
}
else
skor_A[0] -= 1;
}
else if (skor_A[1] <= 0)
{
skor_A[1] = 0;
if (skor_A[0] >= 1)
{
skor_A[0] -= 1;
}
else if(skor_A[0] <= 0)
{
skor_A[0] = 0;
}
}
count = 10;
}
}
if (count == 20)
{
tampil_full('b',skor_B[1],skor_B[0]);
if (digitalRead(pin_benar)== HIGH)
{
count = 21;
delay(1000);
skor_B[0] += 2;
if (skor_B[0] >=10)
{
skor_B[0] -= 10;
skor_B[1] += 1;
}
count = 20;
}
else if(digitalRead(pin_salah) == HIGH)
{
count = 21;
delay(1000);
if (skor_B[1] >= 1)
{
if (skor_B[0] <= 0)
{
skor_B[1] -= 1;
skor_B[0] = 9;
}
else
skor_B[0] -= 1;
}
else if (skor_B[1] <= 0)
{
skor_B[1] = 0;
if (skor_B[0] >= 1)
{
skor_B[0] -= 1;
}
else if(skor_B[0] <= 0)
{
skor_B[0] = 0;
}
}
count = 20;
}
}
if (count == 30)
{
tampil_full('c',skor_C[1],skor_C[0]);
if (digitalRead(pin_benar)== HIGH)
{
count = 31;
delay(1000);
skor_C[0] += 2;
if (skor_C[0] >=10)
{
skor_C[0] -= 10;
skor_C[1] += 1;
}
count = 30;
}
else if(digitalRead(pin_salah) == HIGH)
{
count = 31;
delay(1000);
if (skor_C[1] >= 1)
{
if (skor_C[0] <= 0)
{
skor_C[1] -= 1;
skor_C[0] = 9;
}
else
skor_C[0] -= 1;
}
else if (skor_C[1] <= 0)
{
skor_C[1] = 0;
if (skor_C[0] >= 1)
{
skor_C[0] -= 1;
}
else if(skor_C[0] <= 0)
{
skor_C[0] = 0;
}
}
count = 30;
}
}
}
void tampil_awal()
{
delay(5);
tampil_digit(1);
tampil_huruf('-');
delay(5);
tampil_digit(2);
tampil_huruf('-');
delay(5);
tampil_digit(3);
tampil_huruf('-');
delay(5);
}
void tampil_tim()
{
delay(5);
tampil_digit(1);
tampil_huruf('a');
delay(5);
tampil_digit(2);
tampil_huruf('b');
delay(5);
tampil_digit(3);
tampil_huruf('c');
delay(5);
}
void tampil_full(char tim, int skor_1, int skor_2)
{
delay(5);
tampil_digit(1);
tampil_huruf(tim);
delay(5);
tampil_digit(2);
tampil_angka(skor_1);
delay(5);
tampil_digit(3);
tampil_angka(skor_2);
delay(5);
}
void tampil_huruf(char tim)
{
switch(tim)
{
case 'a':
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
case 'b':
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
case 'c':
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
break;
case '-':
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
break;
default:
break;
}
}
void tampil_digit(int angka)
{
switch (angka)
{
case 1:
digitalWrite(digit_1, LOW);
digitalWrite(digit_2, HIGH);
digitalWrite(digit_3, HIGH);
break;
case 2:
digitalWrite(digit_2, LOW);
digitalWrite(digit_1, HIGH);
digitalWrite(digit_3, HIGH);
break;
case 3:
digitalWrite(digit_3, LOW);
digitalWrite(digit_2, HIGH);
digitalWrite(digit_1, HIGH);
break;
default:
break;
}
}
void tampil_angka(int angka)
{
switch (angka)
{
//number 0
case 0:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
break;
//number 1
case 1:
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
//number 2
case 2:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
break;
//number 3
case 3:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
break;
//number 4
case 4:
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
//number 5
case 5:
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
//number 6
case 6:
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
//number 7
case 7:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
//number 8
case 8:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
//number 9
case 9:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
}
}