#include <TM1637Display.h>
// Pin TM1637
#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);
// Pin Lampu Lalu Lintas
#define LED_MERAH 8
#define LED_KUNING 9
#define LED_HIJAU 10
// Durasi waktu (detik)
int timeHijau = 10;
int timeKuning = 3;
int timeMerah = 10;
void setup() {
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_HIJAU, OUTPUT);
display.setBrightness(7); // Kecerahan (0–7)
}
void loop() {
// ---- Fase HIJAU ----
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
countdownDisplay(timeHijau);
// ---- Fase KUNING ----
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, HIGH);
digitalWrite(LED_MERAH, LOW);
countdownDisplay(timeKuning);
// ---- Fase MERAH ----
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, HIGH);
countdownDisplay(timeMerah);
}
// -------------------------
// Fungsi menampilkan countdown ke TM1637
// -------------------------
void countdownDisplay(int detik) {
for (int i = detik; i >= 0; i--) {
display.showNumberDec(i, true); // Tampilkan angka
delay(1000); // 1 detik
}
}