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
}