#include <Adafruit_NeoPixel.h>
// Define pin untuk sensor PIR
#define PIR_PIN 34
// Define pin untuk buzzer
#define BUZZER_PIN 33
// Define pin untuk sensor LDR
#define LDR_PIN 32
// Define pin untuk lampu neopixel
#define NEOPIXEL_PIN 19
// Define jumlah LED pada lampu neopixel
#define NEOPIXEL_COUNT 10
// Define nilai ambang batas untuk mendeteksi siang dan malam
#define THRESHOLD_Siang 500
#define THRESHOLD_Malam 100
// Deklarasikan objek untuk lampu neopixel
Adafruit_NeoPixel strip(NEOPIXEL_COUNT, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// Set pin sensor PIR sebagai input
pinMode(PIR_PIN, INPUT);
// Set pin buzzer sebagai output
pinMode(BUZZER_PIN, OUTPUT);
// Set pin sensor LDR sebagai input
pinMode(LDR_PIN, INPUT);
// Mulai serial monitor
Serial.begin(9600);
// Inisialisasi lampu neopixel
strip.begin();
// Set semua LED pada lampu neopixel berwarna hitam
strip.setPixelColor(0, 0, 0, 0);
strip.show();
}
void loop() {
// Baca status dari sensor LDR
int val = analogRead(LDR_PIN);
// Jika nilai sensor LDR lebih besar dari ambang batas siang, maka hari
if (val > THRESHOLD_Siang) {
// Tampilkan pesan di serial monitor
Serial.println("Hari");
// Matikan lampu neopixel
strip.setPixelColor(0, 0, 0, 0);
strip.show();
} else {
// Jika nilai sensor LDR lebih kecil dari ambang batas malam, maka malam
if (val < THRESHOLD_Malam) {
// Tampilkan pesan di serial monitor
Serial.println("Malam");
// Nyalakan lampu neopixel berwarna putih
strip.setPixelColor(0, 255, 255, 255);
strip.show();
}
}
// Baca status dari sensor PIR
val = digitalRead(PIR_PIN);
// Jika gerakan terdeteksi
if (val == HIGH) {
// Nyalakan buzzer
digitalWrite(BUZZER_PIN, HIGH);
// Tampilkan pesan di serial monitor
Serial.println("Gerakan terdeteksi!");
} else {
// Matikan buzzer
digitalWrite(BUZZER_PIN, LOW);
// Tampilkan pesan di serial monitor
Serial.println("Gerakan tidak terdeteksi!");
}
// Tunda 100 milidetik
delay(3000);
}