//manggil library
#include <DHTesp.h>
//inisialisasi pin di D15
const int DHT_PIN = 15;
//inisialisasi di pin 2
#define ldrPin 2
//in pin
#define Merah 27 //Lampu
#define Biru 14 //Air
#define Hijau 12 //Kipas
// untuk rumus ldr cahaya
const float gama = 0.7;
const float rl10 = 50;
//library
DHTesp dhtSensor;
void setup() {
// put your setup code here, to run once:
//kecepatan pengeiriman datanya
Serial.begin(115200);
//
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(Merah, OUTPUT);
//low mati
digitalWrite(Merah, LOW);
pinMode(Biru, OUTPUT);
digitalWrite(Biru, LOW);
pinMode(Hijau, OUTPUT);
digitalWrite(Hijau, LOW);
}
float Lux(){
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
float kecerahan = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama));
return kecerahan;
}
void loop() {
//sensor kelembaban dan suhu
TempAndHumidity data = dhtSensor.getTempAndHumidity();
//Rule :
//Suhu rendah lampu menyala merah
//Suhu tinggi kipas menyala hijau
// Kelembapan rendah air menyala biru
// Kelembapan tinggi lampu dan kipas menyala
if (data.temperature <= 15){
digitalWrite(Merah, HIGH);
digitalWrite(Biru, LOW);
digitalWrite(Hijau, LOW);
if(data.humidity <= 79){
digitalWrite(Biru, HIGH);
}
if(data.humidity >= 96){
digitalWrite(Hijau, HIGH);
}
}
if(data.temperature >=31){
digitalWrite(Merah, LOW);
digitalWrite(Biru, LOW);
digitalWrite(Hijau, HIGH);
if(data.humidity <= 79){
digitalWrite(Biru, HIGH);
}
if(data.humidity >= 96){
digitalWrite(Merah, HIGH);
digitalWrite(Hijau, HIGH);
}
}
if(data.humidity <= 79){
digitalWrite(Merah, LOW);
digitalWrite(Biru, HIGH);
digitalWrite(Hijau, LOW);
if(data.temperature <= 15){
digitalWrite(Merah, HIGH);
}
if(data.temperature >= 31){
digitalWrite(Hijau, HIGH);
}
}
if(data.humidity >= 96){
digitalWrite(Merah, HIGH);
digitalWrite(Biru, LOW);
digitalWrite(Hijau, HIGH);
if(data.temperature <= 15){
digitalWrite(Merah, HIGH);
}
if(data.temperature >=31){
digitalWrite(Hijau, HIGH);
}
}
if(data.temperature >= 16 && data.temperature <= 30 && data.humidity >=80 && data.humidity <= 95){
digitalWrite(Merah, LOW);
digitalWrite(Biru, LOW);
digitalWrite(Hijau, LOW);
}
Serial.print("Kecerahan : ");
Serial.println(Lux());
delay(100);
// put your main code here, to run repeatedly
}