#include "DHT.h"
#include<Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 0
int red_led = 7;
int green_led = 6;
int blue_led = 5;
LiquidCrystal_I2C LCD(0x27, 16, 4);
void setup() {
pinMode(red_led, OUTPUT);
pinMode(green_led, OUTPUT);
pinMode(blue_led, OUTPUT);
Serial.begin(115200);
Serial.println(F("DHT22 example!"));
dht.begin();
}
void loop() {
LCD.begin(16, 2);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
if (isnan(temperature) || isnan(humidity)) {
LCD.print("Failed to read from DHT sensor!");
return;
}
if(temperature <= 15.0){
LCD.setCursor(0,0);
LCD.print(temperature);
LCD.setCursor(0,1);
LCD.print("Freezing");
led_color(255,255,0);
Serial.println("freezing");
}else if(temperature > 15 && temperature <= 34){
LCD.setCursor(0,0);
LCD.print(temperature);
LCD.setCursor(0,1);
LCD.print("Pleasant");
led_color(0,0,255);
Serial.println("ideal");
}else {
LCD.setCursor(0,0);
LCD.print(temperature);
LCD.setCursor(0,1);
LCD.print("Humid");
led_color(0,255,255);
Serial.println("too hot!");
}
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C "));
delay(2000);
}
void led_color(int red_value, int green_value,int blue_value)
{
analogWrite(red_led,red_value);
analogWrite(green_led,green_value);
analogWrite(blue_led,blue_value);
}