const int buttonPin = 1; // Pin untuk push button
// Pin konfigurasi untuk traffic lights di 4 arah
const int lightPins[4][3] = {
{4, 3, 2}, // Arah 1: {merah, kuning, hijau}
{7, 6, 5}, // Arah 2: {merah, kuning, hijau}
{10, 9, 8}, // Arah 3: {merah, kuning, hijau}
{13, 12, 11} // Arah 4: {merah, kuning, hijau}
};
int buttonState = 0;
int caseState = 0;
int lastButtonState = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
pinMode(lightPins[i][j], OUTPUT);
}
}
}
void loop() {
buttonState = digitalRead(buttonPin);
// Check if the button is pressed
if (buttonState == HIGH && lastButtonState == LOW) {
caseState++;
if (caseState > 7) { // 4 directions x 2 states (green and yellow)
caseState = 0;
}
delay(50); // Debounce delay
}
lastButtonState = buttonState;
// Update traffic lights based on caseState
for (int i = 0; i < 4; i++) {
if (i == caseState / 2) { // Divide by 2 to account for both green and yellow states
if (caseState % 2 == 0) {
// Green for the current direction
digitalWrite(lightPins[i][0], LOW); // Red
digitalWrite(lightPins[i][1], LOW); // Yellow
digitalWrite(lightPins[i][2], HIGH); // Green
} else {
// Yellow for the current direction
digitalWrite(lightPins[i][0], LOW); // Red
digitalWrite(lightPins[i][1], HIGH); // Yellow
digitalWrite(lightPins[i][2], LOW); // Green
}
} else {
// Red for all other directions
digitalWrite(lightPins[i][0], HIGH); // Red
digitalWrite(lightPins[i][1], LOW); // Yellow
digitalWrite(lightPins[i][2], LOW); // Green
}
}
delay(1000); // Adjust this delay as needed
}