// Definisikan pin untuk traffic light
const int redPin = 13;
const int yellowPin = 12;
const int greenPin = 11;
// Definisikan pin untuk seven segment display
const int segA = 2;
const int segB = 3;
const int segC = 4;
const int segD = 5;
const int segE = 6;
const int segF = 7;
const int segG = 8;
// Tabel untuk angka di seven segment display (katoda umum)
const byte numToSeg[10] = {
B1111110, // 0
B0110000, // 1
B1101101, // 2
B1111001, // 3
B0110011, // 4
B1011011, // 5
B1011111, // 6
B1110000, // 7
B1111111, // 8
B1111011 // 9
};
void setup() {
// Set pin mode untuk LED
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
// Set pin mode untuk seven segment display
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
}
void loop() {
// Cycle through traffic light phases
displayNumber(0); // Tampilkan 0 di seven segment
// Merah selama 5 detik
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
delay(5000);
// Kuning selama 2 detik
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, LOW);
delay(2000);
// Hijau selama 5 detik
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, HIGH);
delay(5000);
// Matikan semua lampu dan tampilkan angka 1
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
displayNumber(1); // Tampilkan 1 di seven segment
delay(2000); // Tunggu 2 detik sebelum loop ulang
}
void displayNumber(int num) {
// Menampilkan angka di seven segment display
byte seg = numToSeg[num];
digitalWrite(segA, bitRead(seg, 0));
digitalWrite(segB, bitRead(seg, 1));
digitalWrite(segC, bitRead(seg, 2));
digitalWrite(segD, bitRead(seg, 3));
digitalWrite(segE, bitRead(seg, 4));
digitalWrite(segF, bitRead(seg, 5));
digitalWrite(segG, bitRead(seg, 6));
}