#include <DHT.h>
#define DHTPIN 4 // Pin data sensor DHT
#define DHTTYPE DHT22 // Jenis sensor DHT
DHT dht(DHTPIN, DHTTYPE);
#define trigPin 6
#define echoPin 5
#define relayPin1 2
#define relayPin2 3
#define ledPin 7
#define buzzerPin 8
long duration;
int distance;
int distanceThreshold = 10; // Jarak threshold untuk mengaktifkan relay dan lampu LED (dalam cm)
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Sensor Jarak
digitalWrite(trigPin, LOW); // Kirim sinyal ultrasonik
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Hitung waktu pantulan
distance = duration * 0.034 / 2; // Hitung jarak
Serial.print("Distance: ");
Serial.println(distance);
if (distance < distanceThreshold) { // Jika jarak kurang dari threshold
digitalWrite(relayPin2, HIGH); // Aktifkan relay kedua
digitalWrite(ledPin, HIGH); // Nyalakan lampu LED
delay(1000);
} else {
digitalWrite(relayPin2, LOW); // Matikan relay kedua
digitalWrite(ledPin, LOW); // Matikan lampu LED
}
// Sensor Suhu
float temperature = dht.readTemperature(); // Baca suhu
Serial.print("Temperature: ");
Serial.println(temperature);
if (temperature < 20 || temperature > 30) { // Jika suhu di luar rentang
digitalWrite(relayPin1, HIGH); // Aktifkan relay pertama
tone(buzzerPin, 200); // Bunyikan buzzer
delay(1000);
noTone(buzzerPin);
} else {
digitalWrite(relayPin1, LOW); // Matikan relay pertama
noTone(buzzerPin); // Pastikan buzzer mati
}
delay(1000); // Delay untuk mengurangi frekuensi pembacaan sensor
}