// Definisikan pin
// Seven segment display pin
const int pinSegmen[8] = {2, 3, 4, 5, 6, 7, 8};
// Definisikan bit dari seven segment
const byte byteAngka[10] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11110110 // 9
};
// Definisikan pin lampu LED
#define merah 11
#define kuning 10
#define hijau 9
void setup() {
// Set semua pin seven segment menjadi output
for (int i = 0; i < 7; i++) {
pinMode(pinSegmen[i], OUTPUT);
}
// Set lampu LED menjadi output
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
}
void loop() {
// Perhitungan mundur
// Mulai dari angka 9
for (int i = 9; i >= 0; i--) {
displayAngka(i);
// Tentukan lampu LED yang menyala
// Proses terjadi tiap perulangan berjalan
if (i < 4 && i > 0) {
digitalWrite(merah, LOW);
digitalWrite(kuning, HIGH);
digitalWrite(hijau, LOW);
}
else if (i == 0) {
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
}
else {
digitalWrite(merah, HIGH);
digitalWrite(kuning, LOW);
digitalWrite(hijau, LOW);
}
// Biarkan menyala selama 1 detik (1000 ms)
delay(1000);
}
}
// Function displayAngka yang dipanggil dalam void setup()
void displayAngka(int num) {
// Perulangan untuk mempersingkat digitalWrite
for (int i = 1; i < 8; i++) {
// Jika array byteAngka[index ke-num]
// index bit ke-i dibaca dari kanan == 0 atau false
if (bitRead(byteAngka[num], i) == LOW) {
digitalWrite(pinSegmen[7-i], HIGH); // matikan segmen
}
// index bit ke-i dibaca dari kanan == 1 atau true
else {
digitalWrite(pinSegmen[7-i], LOW); // nyalakan segmen
}
}
}