int A = 8;
int B = 9;
int C = 3;
int D = 4;
int E = 5;
int F = 7;
int G = 6;
int DP = 2;
int LED = 11; // Pin untuk LED
int KeadaanTombol;
int TombolSebelumnya = HIGH;
int Hitung = 0;
bool LedMenyala = false;
bool SevenSegmenAktif = false;
bool TombolKetigaDitekan = false; // Menandakan apakah tombol ketiga ditekan
unsigned long WaktuTerakhir= 0;
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(13, INPUT_PULLUP);
digitalWrite(DP, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(LED, LOW); // Matikan LED
Serial.begin(9600);
}
void loop() {
KeadaanTombol = digitalRead(13);
if (KeadaanTombol != TombolSebelumnya) {
if (KeadaanTombol == LOW) {
if (!LedMenyala && !SevenSegmenAktif && !TombolKetigaDitekan) {
LedMenyala = true;
digitalWrite(LED, HIGH);
} else if (!LedMenyala && SevenSegmenAktif && !TombolKetigaDitekan) {
Hitung = 0;
digitalWrite(LED, LOW);
TambahAngka(Hitung);
SevenSegmenAktif = false;
} else if (TombolKetigaDitekan) {
// Tombol ketiga ditekan, matikan LED dan Seven Segmen
LedMenyala = false;
SevenSegmenAktif = false;
MatikanSevenSegmen();
delay(250); // Debounce
TombolKetigaDitekan = false;
} else {
LedMenyala = false;
SevenSegmenAktif = true;
}
delay(250); // Debounce
}
}
TombolSebelumnya = KeadaanTombol;
if (SevenSegmenAktif && millis() - WaktuTerakhir > 1000) {
Hitung = (Hitung + 1) % 10;
Serial.println(Hitung);
TambahAngka(Hitung);
WaktuTerakhir = millis();
}
}
void TambahAngka(int TampilAngka) {
// Matikan semua digit sebelum menampilkan angka baru
MatikanSevenSegmen();
switch (TampilAngka) {
case 0:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
break;
case 1:
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
case 2:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
delay(500);
break;
case 3:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
delay(500);
break;
case 4:
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
delay(500);
break;
case 5:
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
delay(500);
break;
case 6:
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
delay(500);
break;
case 7:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
delay(500);
break;
case 8:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
delay(500);
break;
case 9:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
delay(500);
break;
default:
break;
}
}
void MatikanSevenSegmen() {
// Matikan semua digit Seven Segmen
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}