const int sensorPin = 5; // Pin sensor PIR motion
const int redPin = 25; // Pin LED merah
const int yellowPin = 33; // Pin LED kuning

const unsigned long timeout = 30000; // 30 detik dalam milidetik
unsigned long lastDetectionTime = 0; // Waktu terakhir deteksi objek

void setup() {
  // Inisialisasi Data serial
  Serial.begin(115200);
  pinMode(sensorPin, INPUT);// Menyetel pin sensor sebagai input

  // Menyetel pin LED sebagai output
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
}

void loop() {
  int sensorState = digitalRead(sensorPin); // Membaca status dari sensor PIR
  
  if (sensorState == HIGH) { // apabila sensor mendeteksi objek
    Serial.println("Bahaya-Bahaya"); // menampilkan pesan bahaya-bahaya
    blinkLED(redPin, 100); // LED merah berkedip cepat
    lastDetectionTime = millis(); // mereset waktu terakhir
  } else {
    unsigned long timeNow = millis();
    if (timeNow - lastDetectionTime > timeout) {
      // Apabila ebih dari 30 detik tidak ada objek yg terdeteksi
      blinkLED(yellowPin, 500); // LED kuning berkedip perlahan 
    } else {
      // Jika tidak ada objek terdeteksi selama 30 detik
      blinkLED(redPin, 500); // LED merah berkedip perlahan
    }
  }
}

// Fungsi untuk membuat LED berkedip menggunakan interval
void blinkLED(int pin, int interval) {
  digitalWrite(pin, HIGH);
  delay(interval); // LED menyala sesuai dengan interval
  digitalWrite(pin, LOW);
  delay(interval); // menunggu interval sebelumnya
}