// Array berisi pola bit untuk menampilkan angka 0-9 pada 7-segment display
const byte numeral[11] = {
B00000011, // 0
B10011111, // 1
B00100101, // 2
B00001101, // 3
B10011001, // 4
B01001001, // 5
B01000000, // 6
B00011111, // 7
B00000001, // 8
B00001001, // 9
//B00000000, //tidak menampilkan
};
// Array berisi pin yang terhubung ke segmen-segmen pada 7-segment display
const int segmentPins[8] = { 8, 7, 6, 11, 10, 9, 4, 5 }; //dp,g,f,e,d,c,b,a
// Mendeklarasikan pin untuk LED dengan makro
#define Led_R 12 // deklarasi pin 12 untuk Led Merah
#define Led_K 2 // deklarasi pin 12 untuk Led Merah
#define Led_H 3 // deklarasi pin 12 untuk Led Merah
void setup() {
// Menetapkan pin LED sebagai output
pinMode(Led_R, OUTPUT); // Pin LED Merah sebagai output
pinMode(Led_K, OUTPUT); // Pin LED Kuning sebagai output
pinMode(Led_H, OUTPUT); // Pin LED Hijau sebagai output
// Menetapkan pin-pin untuk segmen-segmen 7-segment display sebagai output
for (int i = 0; i < 8; i++) { //
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
// Menyalakan LED Hijau, mematikan LED Merah dan Kuning
digitalWrite(Led_R, LOW);
digitalWrite(Led_K, LOW);
digitalWrite(Led_H, HIGH);
// Menampilkan angka dari 9 ke 0 pada 7-segment display
for (int i = 9; i >= 0; i--) { // Ubah urutan dari 9 ke 0
tampilAngka(i);
delay(1000); // Jeda 1 detik antara angka
}
// Menyalakan LED Kuning, mematikan LED Merah dan Hijau
digitalWrite(Led_R, LOW);
digitalWrite(Led_K, HIGH);
digitalWrite(Led_H, LOW);
// Menampilkan angka dari 5 ke 0 pada 7-segment display
for (int i = 5; i >= 0; i--) { // Ubah urutan dari 5 ke 0
tampilAngka(i);
delay(1000);// Jeda 1 detik antara angka
}
// Menyalakan LED Merah, mematikan LED Hijau dan Kuning
digitalWrite(Led_R, HIGH);
digitalWrite(Led_K, LOW);
digitalWrite(Led_H, LOW);
for (int i = 9; i >= 0; i--) { // Ubah urutan dari 9 ke 0
tampilAngka(i);
delay(1000); //Jeda 1 detik antara angka
}
delay(500);
}
// Fungsi untuk menampilkan angka pada 7-segment display
void tampilAngka (int number) {
boolean isBitSet;
// Loop melalui setiap segmen (dari g hingga a) untuk mengatur tampilan angka
for (int segment = 1; segment < 8; segment++) {
isBitSet = bitRead(numeral[number], segment); // Membaca bit dari pola untuk segmen tertentu
digitalWrite(segmentPins[segment], isBitSet); // Mengatur pin segmen sesuai dengan bit
digitalWrite(segmentPins[0], HIGH); // Mengatur pin untuk titik desimal (dp) ke HIGH (biasanya untuk titik desimal, bisa dimatikan jika tidak digunakan)
}
}