#include <DHT.h> // Include pustaka DHT
// Definisikan pin untuk sensor PIR, DHT22, dan LED
#define PIR_PIN 34 // Sensor PIR (Motion) pada GPIO 34
#define LED_PIN 19 // LED pada GPIO 19
#define DHT_PIN 23 // Sensor DHT22 pada GPIO 23
#define DHT_TYPE DHT22 // Jenis sensor DHT
DHT dht(DHT_PIN, DHT_TYPE); // Inisialisasi sensor DHT22
int pirState = LOW; // Status awal PIR (tidak ada pergerakan)
float temp; // Suhu
int hum; // Kelembaban
void setup() {
// Mulai komunikasi serial
Serial.begin(115200);
// Set pin LED sebagai output
pinMode(LED_PIN, OUTPUT);
// Set pin PIR sebagai input
pinMode(PIR_PIN, INPUT);
// Inisialisasi sensor DHT22
dht.begin();
}
void loop() {
// Membaca status dari sensor PIR
pirState = digitalRead(PIR_PIN);
// Membaca suhu dan kelembaban dari sensor DHT22
temp = dht.readTemperature(); // Pembacaan suhu dalam Celsius
hum = dht.readHumidity(); // Pembacaan kelembaban
// Cek jika pembacaan suhu atau kelembaban gagal
if (isnan(temp) || isnan(hum)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Debug informasi suhu dan kelembaban ke Serial Monitor
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(hum);
Serial.println(" %");
// Cek jika ada pergerakan dari sensor PIR
if (pirState == HIGH) {
Serial.println("Motion detected!");
// Jika ada pergerakan atau suhu lebih dari 30°C, nyalakan LED
if (temp > 30) {
digitalWrite(LED_PIN, HIGH); // Nyalakan LED karena suhu tinggi
Serial.println("LED turned ON: Motion and/or High Temperature detected.");
} else {
digitalWrite(LED_PIN, HIGH); // Nyalakan LED karena ada pergerakan
Serial.println("LED turned ON: Motion detected.");
}
} else {
// Jika tidak ada pergerakan, matikan LED jika suhu tidak panas
if (temp > 30) {
digitalWrite(LED_PIN, HIGH); // Nyalakan LED jika suhu lebih dari 30°C
Serial.println("LED turned ON: High temperature detected.");
} else {
digitalWrite(LED_PIN, LOW); // Matikan LED jika tidak ada pergerakan dan suhu normal
Serial.println("LED turned OFF: No motion and normal temperature.");
}
}
// Delay untuk membaca sensor lagi setelah 2 detik
delay(3500);
}