// Pin untuk LED
const int ledHijau = 3;
const int ledKuning = 4;
const int ledMerah = 5;
// Pin untuk tombol
const int tombol = 2;
// Pin untuk 7-segment display (A-G)
const int segA = 6;
const int segB = 7;
const int segC = 8;
const int segD = 9;
const int segE = 10;
const int segF = 11;
const int segG = 12;
// Angka 0-9 untuk 7-segment display (common cathode)
const int angka[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() {
// Inisialisasi LED
pinMode(ledHijau, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledMerah, OUTPUT);
// Inisialisasi tombol
pinMode(tombol, INPUT_PULLUP);
// Inisialisasi 7-segment display
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
// Nyalakan lampu hijau awal
digitalWrite(ledHijau, HIGH);
}
void loop() {
// Cek apakah tombol ditekan
if (digitalRead(tombol) == LOW) {
// Matikan lampu hijau
digitalWrite(ledHijau, LOW);
// Nyalakan lampu kuning selama 3 detik
digitalWrite(ledKuning, HIGH);
delay(3000);
digitalWrite(ledKuning, LOW);
// Nyalakan lampu merah selama 20 detik
digitalWrite(ledMerah, HIGH);
// Count down 20 detik di 7-segment
for (int i = 20; i >= 0; i--) {
tampilkanAngka(i); // Tampilkan angka di 7-segment
delay(1000); // Delay 1 detik untuk count down
}
// Matikan lampu merah
digitalWrite(ledMerah, LOW);
// Nyalakan kembali lampu hijau
digitalWrite(ledHijau, HIGH);
}
}
void tampilkanAngka(int angkaDisplay) {
// Tampilkan angka pada 7-segment
for (int i = 0; i < 7; i++) {
digitalWrite(segA + i, angka[angkaDisplay][i]);
}
}