#include <Adafruit_Sensor.h>
#include <DHT.h>
#define PIR 34
#define ECHO 32
#define TRIG 4
#define DHT_PIN 21
#define Batas_Temperatur 25
#define Batas_Kelembapan 40
#define M_LED 23
#define B_LED 22
#define H_LED 5
#define U_LED 19
#define K_LED 18
DHT dht(DHT_PIN, DHT22);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dht.begin();
pinMode(PIR, INPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(M_LED, OUTPUT);
pinMode(B_LED, OUTPUT);
pinMode(H_LED, OUTPUT);
pinMode(U_LED, OUTPUT);
pinMode(K_LED, OUTPUT);
}
float ping(){
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(ECHO, LOW);
int duration_nanosec = pulseIn(ECHO, HIGH);
float distance_cm = 0.017 * duration_nanosec;
return distance_cm;
}
void loop() {
float kelembapan = dht.readHumidity();
float temperatur = dht.readTemperature();
if(digitalRead(PIR)==1 && temperatur >= Batas_Temperatur && kelembapan >= Batas_Kelembapan){
for (int i=1;i<=5;i++){
Serial.print("Jarak yang Terdeteksi ");
Serial.print(ping());
bool isNearby = ping () <=100;
digitalWrite(M_LED,isNearby);
delay(400);
digitalWrite(M_LED, LOW);
bool isnearby = ping () <= 200 && ping() > 100;
digitalWrite(B_LED,isnearby);
delay(400);
digitalWrite(B_LED, LOW);
bool isnEarby = ping () <= 300 && ping() > 200;
digitalWrite(H_LED,isnEarby);
delay(400);
digitalWrite(H_LED, LOW);
bool isnearbY = ping () <= 400 && ping() > 300;
digitalWrite(U_LED,isnearbY);
delay(400);
digitalWrite(U_LED, LOW);
Serial.print("Temperatur ");
Serial.println(temperatur);
Serial.print("Kelembapan ");
Serial.println(kelembapan);
}
}
else {
digitalWrite(M_LED, HIGH);
delay(300);
digitalWrite(M_LED, LOW);
digitalWrite(B_LED, HIGH);
delay(300);
digitalWrite(B_LED, LOW);
digitalWrite(H_LED, HIGH);
delay(300);
digitalWrite(H_LED, LOW);
digitalWrite(U_LED, HIGH);
delay(300);
digitalWrite(U_LED, LOW);
digitalWrite(K_LED, HIGH);
delay(300);
digitalWrite(K_LED, LOW);
}
}