// Inisialisasi pin
int ledPinIndoor = 13;      // Pin yang mengontrol LED di dalam ruangan
int pirPin = A0;            // Pin yang terhubung ke PIR sensor (ruang dalam)
int pirState = LOW;         // Menyimpan status deteksi PIR (awalnya tidak ada deteksi)
int valPir = 0;             // Variabel untuk menyimpan nilai pembacaan PIR sensor
int ledPinOutdoor = 10;     // Pin untuk mengendalikan LED di luar ruangan
int ldrPin = A1;             // Pin untuk membaca nilai dari sensor LDR (ruang luar)

void setup() {
  pinMode(ledPinIndoor, OUTPUT);  // Mengatur ledPinIndoor sebagai output
  pinMode(pirPin, INPUT);         // Mengatur pirPin sebagai input (PIR sensor)
  pinMode(ledPinOutdoor, OUTPUT); // Mengatur ledPinOutdoor sebagai output
  pinMode(ldrPin, INPUT);          // Mengatur ldrPin sebagai input (LDR sensor)
  Serial.begin(9600);             // Inisialisasi komunikasi serial
}

void loop() {
  // Membaca nilai dari PIR sensor (ruang dalam)
  valPir = digitalRead(pirPin);
  if (valPir == HIGH) {  // Jika deteksi gerakan di dalam ruangan
    digitalWrite(ledPinIndoor, HIGH);  // Menyalakan LED di dalam ruangan
    if (pirState == HIGH) {  // Jika sebelumnya terdeteksi gerakan di dalam ruangan
      Serial.println("ADA ORANG,Dalam Rumah!"); // Cetak pesan ke Serial Monitor
      pirState = LOW;  // Update status deteksi di dalam ruangan menjadi tidak ada
    }
  } else {  // Jika tidak ada deteksi gerakan di dalam ruangan
    digitalWrite(ledPinIndoor, LOW);  // Matikan LED di dalam ruangan
    if (pirState == LOW) {  // Jika sebelumnya tidak terdeteksi gerakan di dalam ruangan
      Serial.println("TIDAK ADA ORANG,Di Dalam Rumah!"); // Cetak pesan ke Serial Monitor
      pirState = HIGH;  // Update status deteksi di dalam ruangan menjadi terdeteksi
    }
  }

  // Membaca nilai dari sensor LDR (ruang luar)
  int statusLdr = analogRead(ldrPin);
  if (statusLdr > 300) {
    digitalWrite(ledPinOutdoor, HIGH);  // Menghidupkan LED di luar ruangan jika cahaya rendah
    delay(2000);
    digitalWrite(ledPinOutdoor, LOW);   // Mematikan LED di luar ruangan
    Serial.print("MALAM, Lampu di Luar Rumah Hidup :");
    Serial.println(statusLdr);  // Mencetak nilai sensor LDR
  } else {
    digitalWrite(ledPinOutdoor, LOW);  // Mematikan LED di luar ruangan jika cahaya cukup terang
    Serial.print("SIANG, Lampu di Luar Rumah Mati :");
    Serial.println(statusLdr);  // Mencetak nilai sensor LDR
    delay (2000);
  }
}