#define a 6
#define b 7
#define c 8
#define d 9
#define e 10
#define f 11
#define g 12
#define dp 13
#define D1 4
#define D2 5
#define Dsw1 A0
#define Dsw2 A1
#define Dsw3 A2
#define Dsw4 A3
bool sw1, sw2, sw3, sw4;
int segments[] = {a, b, c, d, e, f, g};
byte digitPatterns[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segments[i], OUTPUT);
}
pinMode(dp, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(Dsw1, INPUT_PULLUP);
pinMode(Dsw2, INPUT_PULLUP);
pinMode(Dsw3, INPUT_PULLUP);
pinMode(Dsw4, INPUT_PULLUP);
Serial.begin(9600);
}
void number(int display) {
if (display >= 0 && display <= 9) {
for (int i = 0; i < 7; i++) {
digitalWrite(segments[i], digitPatterns[display][i]);
}
}
}
void loop() {
sw1 = digitalRead(Dsw1);
sw2 = digitalRead(Dsw2);
sw3 = digitalRead(Dsw3);
sw4 = digitalRead(Dsw4);
// Menampilkan angka 0, 1, 2, dan 3 di awal output
for (int i = 0; i <= 3; i++) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
number(i); // Menampilkan angka yang sedang dihitung
delay(500); // Delay selama 0.5 detik
}
// Menampilkan kombinasi angka 2, 0, 2, dan 4 setelah kedua switch diaktifkan
if ((sw1 == LOW || sw2 == LOW || sw3 == LOW || sw4 == LOW)) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
number(2); // Menampilkan angka 2 pada digit pertama
delay(500); // Delay selama 0.5 detik
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
number(0); // Menampilkan angka 0 pada digit kedua
delay(500); // Delay selama 0.5 detik
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
number(2); // Menampilkan angka 2 pada digit pertama
delay(500); // Delay selama 0.5 detik
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
number(4); // Menampilkan angka 4 pada digit kedua
delay(500); // Delay selama 0.5 detik
}
}