//PENGGUNAAN ESP DENGAN SENSOR DHT DAN LDR
//Nama : Dwi Setyaman
//Nim : 20200130105
//jika suhu kurang dari 31 derajat C maka lampu 1 menyala selama 17 detik setelah itu
//padam, jika suhu lebih dari 34 derajat C maka lampu 1 dan 2 menyala selama 19 detik
//setelah itu padam, dan jika sensor LDR bernilai 0 maka lampu 1 dan 3 menyala selama 16 detik
// setelah itu padam
//UNTUK SENSOR SUHU
#include "DHT.h"
#define DHTPIN 15
#define DHTTYPE DHT22 // (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
//UNTUK SENSOR LDR
// defines pins numbers
const int flamepin = 14;
int flamePin = HIGH;
const int ledpin1 = 5;
const int ledPin2 = 4;
const int ledPin3 = 2;
int ldrPin = A0; // LDR pin
int ldrVal = 0; // Value of LDR
// LDR Characteristics
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Hello, ESP32!");
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
pinMode(14, INPUT);
dht.begin();
pinMode(flamePin, INPUT);
pinMode(ledpin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop() {
//UNTUK SENSOR SUHU
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
//check if any reads failed and exit early (to try again).
if (temperature < 31){
digitalWrite(5, HIGH);
delay(17000);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
}
else{
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
if (temperature > 34){
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(19000);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
else{
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(2, LOW);
}
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.print(F("°C"));
// Wait a few second between measurements.
delay(2000);
ldrVal = analogRead(ldrPin); // Read the analog value of the LDR
float voltage = ldrVal / 4095. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
if (lux <= 0.10 ) {
digitalWrite(5, HIGH);
digitalWrite(2, HIGH);
delay(16000);
digitalWrite(5, LOW);
digitalWrite(2, LOW);
}
else{
digitalWrite(5, LOW);
digitalWrite(2, LOW);
}
Serial.print(" ");
Serial.print("LDR: ");
Serial.print(lux);
Serial.print(" ");
Serial.println("lux ");
delay(1000);
}