//Rangga A D 
//4T-JTD 
//244101067012

const int redLED = 4;  // nomor pin led merah
const int yellowLED = 2;  // nomor pin led kuning
const int greenLED = 15;  // nomor pin led hijau
const int buzzer = 23;  // nomor pin buzzer
const int buttonPin = 33;  // nomor pin push button

bool buttonPressed = false; //kondisi boolean button

void setup() {
    pinMode(redLED, OUTPUT);  // led dan buzzer sbg output
    pinMode(yellowLED, OUTPUT);
    pinMode(greenLED, OUTPUT);
    pinMode(buzzer, OUTPUT);
    pinMode(buttonPin, INPUT_PULLUP); // push button sebagai input 
    Serial.begin(115200); // baud rate
}

void loop() {
    digitalWrite(redLED, HIGH);// led merah menyala
    digitalWrite(greenLED, LOW); // led hijau mati
    Serial.println("Dilarang Menyebrang Jalan"); // menampilkan tulisan di serial monitor
    // led kuning blinking setiap 1 detik sampai push button ditekan
    while (!buttonPressed) {
        digitalWrite(yellowLED, HIGH);
        delay(1000);
        digitalWrite(yellowLED, LOW);
        delay(1000);
        
        // memastikan tombol ditekan
        if (digitalRead(buttonPin) == LOW) {
            buttonPressed = true;
        }
    }
    Serial.println("Silahkan Menyebrang Jalan"); // menampilkan tulisan di serial monitor
    // Phase 2: Green ON, Others OFF
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, HIGH);

    // tombol ditekan, buzzer menyala
    tone(buzzer, 500); // suara 500Hz
    delay(4000);
    noTone(buzzer); // Stop 

    // Reset button state
    buttonPressed = false;
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
bz1:1
bz1:2
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
hold button