#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#define LDR_PIN 34
LiquidCrystal_I2C lcd(0x27,16,2);
LiquidCrystal_I2C lcd2(0x28, 20, 4);
DHTesp dhtSensor;
// LDR Characteristics
const float GAMMA = 0.7;
const float RL10 = 50;
int PURPLE = 19;
int YELLOW = 18;
int CYAN = 17;
void setup() {
Serial.begin(115200);
dhtSensor.setup(13,DHTesp::DHT22);
lcd.init();
lcd.init();
lcd.backlight();
lcd.backlight();
pinMode(PURPLE, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(CYAN, OUTPUT);
pinMode(LDR_PIN, INPUT);
lcd2.init();
lcd2.backlight();
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
if (data.temperature>35){
Serial.println("Hot!");
lcd.setCursor(5, 0);
lcd.print("Too Hot!");
digitalWrite(PURPLE, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(CYAN, LOW);
}
else {
Serial.println("Normal");
lcd.setCursor(5, 0);
lcd.print("Normal");
digitalWrite(PURPLE, LOW);
digitalWrite(YELLOW, HIGH);
digitalWrite(CYAN, LOW);
}
if (data.temperature<10){
Serial.println("Cold!");
lcd.setCursor(5, 0);
lcd.print("Too Cold!");
digitalWrite(PURPLE, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(CYAN, HIGH);
}
delay(500);
int analogValue = analogRead(34);
float voltage = analogValue / 4096. * 3.3;
float resistance = 3000 * voltage / (1 - voltage / 3.3);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lcd2.setCursor(2, 0);
lcd2.print("Room: ");
if (lux > 50) {
lcd2.print("Light!");
} else {
lcd2.print("Dark ");
}
lcd2.setCursor(0, 1);
lcd2.print("Lux: ");
lcd2.print(lux);
lcd2.print(" ");
delay(100);
}