#include <DHT.h>
DHT dht(4, DHT22);
#define echoPin 2
#define trigPin 3
int pinPIR = 5;
int statusPIR = 0;
int maximumRange = 300;
int minimumRange = 00;
long duration, distance;
const int relay1 = 11;
const int relay2 = 12;
const int relay3 = 13;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(5, INPUT);
dht.begin();
}
void loop() {
// penentuan jarak
float lembab = dht.readHumidity();
float suhu = dht.readTemperature();
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
statusPIR = digitalRead(5);
//Perhitungan untuk dijadikan jarak
distance = duration/58.2;
// kirim hasil pembacaan jarak
Serial.print("Jarak: ");
Serial.print(distance);
Serial.print("cm " );
Serial.print("Kelembaban: ");
Serial.print(lembab);
Serial.print("% ");
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print("C ");
delay(500);
//Kecepatan kipas berdasarkan jarak
if (statusPIR == LOW) {
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
Serial.println("Tidak ada orang!");
}
if (statusPIR == HIGH && distance <= 150) {
digitalWrite(1, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
Serial.print("Terdapat orang!");
}
if (statusPIR == HIGH && distance >= 150) {
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
Serial.print("Terdapat orang!");
}
}