#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHT_SENSOR_PIN 15
#define DHT_SENSOR_TYPE DHT22
DHT sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
byte TemperatureIcon[] = {
B01110, B01011, B01010, B01011, B01110, B11111, B11111, B01110
};
byte degreesC[] = {
B11100, B10100, B11100, B00000, B00000, B00000, B00000, B00000
};
byte highIcon[] = {
B00000, B00000, B00001, B00001, B00101, B00101, B10101, B10101
};
byte lowIcon[] = {
B00000, B00000, B00000, B00000, B00000, B00000, B10000, B10000
};
byte idealIcon[] = {
B00000, B00000, B00000, B00000, B00100, B00100, B10100, B10100
};
byte humidityIcon[] = {
B00100, B01110, B01110, B11111, B11111, B11111, B01110, B00000
};
void setup() {
lcd.init();
lcd.backlight();
lcd.createChar(0, degreesC);
lcd.createChar(1, TemperatureIcon);
lcd.createChar(2, lowIcon);
lcd.createChar(3, idealIcon);
lcd.createChar(4, highIcon);
lcd.createChar(5, humidityIcon);
Serial.begin(115200);
sensor.begin();
}
void loop() {
delay(2000);
int temperature = sensor.readTemperature();
int humidity = sensor.readHumidity();
String stateHumidity;
String stateTemperature;
temperature = random(15,40);
humidity = random(50,90);
if(temperature < 18){
stateTemperature = "Low ";
lcd.setCursor(0,1);
lcd.write(2);
}
if(temperature >= 18 && temperature <= 24){
stateTemperature = "Ideal";
lcd.setCursor(0,1);
lcd.write(3);
}
if(temperature > 24){
stateTemperature = "High ";
lcd.setCursor(0,1);
lcd.write(4);
}
if(humidity < 60){
stateHumidity = "Low ";
lcd.setCursor(10,1);
lcd.write(2);
}
if(humidity >= 60 && humidity <= 80){
stateHumidity = "Ideal";
lcd.setCursor(10,1);
lcd.write(3);
}
if(humidity > 80){
stateHumidity = "High ";
lcd.setCursor(10,1);
lcd.write(4);
}
lcd.setCursor(0, 0);
lcd.write(1);
lcd.print("T:");
lcd.print(temperature);
lcd.setCursor(5,0);
lcd.write(0);
lcd.print("C");
lcd.setCursor(10, 0);
lcd.write(5);
lcd.print("H:");
lcd.print(humidity);
lcd.setCursor(1, 1);
lcd.print(stateTemperature);
lcd.setCursor(11, 1);
lcd.print(stateHumidity);
delay(2000);
}