/* ESP32 WiFi Scanning example */
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define sw1 12
#define sw2 13
#define g 33
#define r 25
int old1, new1, old2, new2;
int stat = 0;
int tset = 25;
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
Serial.begin(115200);
lcd.init();
pinMode(sw1, INPUT_PULLUP);
pinMode(sw2, INPUT_PULLUP);
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
dht.begin();
}
void loop() {
delay(500);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
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"));
new1 = digitalRead(sw1);
new2 = digitalRead(sw2);
if (new1 != new2 && new1 == 0) {
stat = !stat;
delay(500);
digitalWrite(r, stat);
lcd.clear();
}
if (new2 != new1 && new2 == 0) {
stat = !stat;
delay(500);
digitalWrite(r, stat);
lcd.clear();
}
if (stat == 1) {
on();
digitalWrite(r, HIGH);
}
if (stat == 0) {
lcd.clear();
lcd.setCursor(6, 1);
lcd.print("power off");
digitalWrite(r, LOW);
digitalWrite(g, LOW);
delay(500);
lcd.noBacklight();
}
}
void on() {
lcd.backlight();
delay(500);
lcd.setCursor(4, 0);
lcd.print("Temp=");
lcd.setCursor(10, 0);
lcd.print(dht.readTemperature());
lcd.setCursor(16, 0);
lcd.print("C");
lcd.setCursor(4, 1);
lcd.print("Humi=");
lcd.setCursor(10, 1);
lcd.print(dht.readHumidity());
lcd.setCursor(16, 1);
lcd.print("%");
lcd.setCursor(1, 3);
lcd.print("Tset= 25 I");
if ( dht.readTemperature() < tset ) {
digitalWrite(g, LOW);
lcd.setCursor(12, 3);
lcd.print("COM OFF");
delay(500);
}
if ( dht.readTemperature() >= tset ) {
digitalWrite(g, HIGH);
lcd.setCursor(12, 3);
lcd.print("COM ON ");
}
delay(500);
}