#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
#define BUZZER 9
// Connect LEDs to these pins
#define COLD_LED 10
#define NORMAL_LED 11
#define HOT_LED 8
// SDA a4 SCL A5
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(BUZZER, OUTPUT);
// Set LED pins to OUTPUT mode
pinMode(COLD_LED, OUTPUT);
pinMode(NORMAL_LED, OUTPUT);
pinMode(HOT_LED, OUTPUT);
}
void loop()
{
delay(500);
float humi = dht.readHumidity();
float tempC = dht.readTemperature();
lcd.clear();
if (isnan(humi) || isnan(tempC)) {
lcd.setCursor(0, 0);
lcd.print("Failed");
} else {
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humi: ");
lcd.print(humi);
lcd.print("%");
Serial.print("Temp: ");
Serial.println(tempC);
Serial.print("Humi: ");
Serial.println(humi);
// Turn off all LEDs before setting the correct one
digitalWrite(COLD_LED, LOW);
digitalWrite(NORMAL_LED, LOW);
digitalWrite(HOT_LED, LOW);
if (tempC <= 28) {
digitalWrite(COLD_LED, HIGH);
} else if (tempC >=30) {
digitalWrite(HOT_LED, HIGH);
} else {
digitalWrite(NORMAL_LED, HIGH);
}
if (tempC <= 25) {
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
}
}
}
// put your setup code here, to run once: