// Definisikan pin untuk setiap segmen pada 7-segment puluhan (Digit 1)
int a1 = 2;
int b1 = 3;
int c1 = 4;
int d1 = 5;
int e1 = 6;
int f1 = 7;
int g1 = 8;
// Definisikan pin untuk setiap segmen pada 7-segment satuan (Digit 2)
int a2 = 9;
int b2 = 10;
int c2 = 11;
int d2 = 12;
int e2 = 13;
int f2 = A0;
int g2 = A1;
// Tabel angka untuk 7-segment common cathode
int angka[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 1, 1, 1, 0, 0, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
void setup() {
// Inisialisasi semua pin sebagai output
// 7-segment digit puluhan
pinMode(a1, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(c1, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(f1, OUTPUT);
pinMode(g1, OUTPUT);
// 7-segment digit satuan
pinMode(a2, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(c2, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(e2, OUTPUT);
pinMode(f2, OUTPUT);
pinMode(g2, OUTPUT);
}
void loop() {
for (int i = 20; i >= 0; i--) { // Mulai dari angka 20 hingga 00
int puluhan = i / 10; // Hitung digit puluhan
int satuan = i % 10; // Hitung digit satuan
tampilkanAngka(puluhan, satuan); // Tampilkan angka
delay(1000); // Jeda selama 1 detik
}
// Setelah mencapai 00, display akan berkedip
while (true) {
tampilkanAngka(0, 0); // Tampilkan 00
delay(500); // Tunggu 0,5 detik
tampilkanKosong(); // Kosongkan display (matikan semua segmen)
delay(500); // Tunggu 0,5 detik
}
}
// Fungsi untuk menampilkan angka pada 7-segment
void tampilkanAngka(int puluhan, int satuan) {
// Tampilkan angka pada digit puluhan (7-segment pertama)
digitalWrite(a1, angka[puluhan][0]);
digitalWrite(b1, angka[puluhan][1]);
digitalWrite(c1, angka[puluhan][2]);
digitalWrite(d1, angka[puluhan][3]);
digitalWrite(e1, angka[puluhan][4]);
digitalWrite(f1, angka[puluhan][5]);
digitalWrite(g1, angka[puluhan][6]);
// Tampilkan angka pada digit satuan (7-segment kedua)
digitalWrite(a2, angka[satuan][0]);
digitalWrite(b2, angka[satuan][1]);
digitalWrite(c2, angka[satuan][2]);
digitalWrite(d2, angka[satuan][3]);
digitalWrite(e2, angka[satuan][4]);
digitalWrite(f2, angka[satuan][5]);
digitalWrite(g2, angka[satuan][6]);
}
// Fungsi untuk mematikan semua segmen (untuk efek berkedip)
void tampilkanKosong() {
// Matikan semua segmen pada digit puluhan
digitalWrite(a1, HIGH);
digitalWrite(b1, HIGH);
digitalWrite(c1, HIGH);
digitalWrite(d1, HIGH);
digitalWrite(e1, HIGH);
digitalWrite(f1, HIGH);
digitalWrite(g1, HIGH);
// Matikan semua segmen pada digit satuan
digitalWrite(a2, HIGH);
digitalWrite(b2, HIGH);
digitalWrite(c2, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(e2, HIGH);
digitalWrite(f2, HIGH);
digitalWrite(g2, HIGH);
}