/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int DHT_PIN = 15;
const int RelayPIN = 18;
const int Relay2PIN = 5;
DHTesp dhtSensor;
DHTesp dht2Sensor;
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
float pns, pns2,
bsh, bsh2;
bool bintang = 0,
panas=0,
kering=0;
void setup() {
// Wire.begin();
Serial.begin(115200);
dht.begin();
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(RelayPIN, OUTPUT);
pinMode(Relay2PIN, OUTPUT);
// initialize LCD
lcd.init();
lcd.setCursor(0, 0);
lcd.print("Welcome");delay(500);
lcd.setCursor(8, 0);
lcd.print("to");delay(500);
lcd.setCursor(0, 1);
lcd.print("walet kont**l");
delay(3000);
lcd.clear();
}
void loop() {
lcd.clear();
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Temp: " + String(data.temperature, 2) + "°C\t");
Serial.println("Humidity: " + String(data.humidity, 1) + "%\t");
Serial.print(F("Humidity: ")); Serial.print(h);
Serial.print(F("% Temperature: ")); Serial.print(t);
Serial.print(F("°C "));
Serial.print(f); Serial.print(F("°F Heat index: "));
Serial.print(hic); Serial.print(F("°C "));
Serial.print(hif); Serial.println(F("°F"));
pns = data.temperature; pns2 = t;
bsh = data.humidity; bsh2 = h;
Serial.print(pns); Serial.print("\t"); Serial.println(pns2);
Serial.print(bsh); Serial.print("\t"); Serial.println(bsh2);
Serial.println(bintang);
lcd.setCursor(0, 0); lcd.print("Temp");
lcd.setCursor(6, 0); lcd.print("Hdty");
lcd.setCursor(12, 0); lcd.print("RL");
lcd.setCursor(0, 1); lcd.print(String(data.temperature, 1) + "C");
lcd.setCursor(6, 1); lcd.print(String(data.humidity, 1) + "%");
switch (bintang){
case 1: bintang = 0;
lcd.setCursor(15, 0);
break;
case 0: bintang = 1;
lcd.setCursor(15, 1);
break;
} lcd.print("*");
if(pns > 35){
panas=1;
}else{
panas=0;
}
if(bsh < 60){
kering=1;
}else{
kering=0;
}
if(panas==1 && kering ==1){
lcd.setCursor(12, 1); lcd.print("on");
digitalWrite(RelayPIN, HIGH);
digitalWrite(Relay2PIN, HIGH);
}else if(panas==0 && kering ==0){
lcd.setCursor(12, 1); lcd.print("><");
digitalWrite(RelayPIN, LOW);
digitalWrite(Relay2PIN, LOW);
}
delay(1000);
}