#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 13 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT22 // Type of DHT sensor
#define RED_PIN 1 // Digital pin connected to the red LED of RGB
#define GREEN_PIN 2 // Digital pin connected to the green LED of RGB
#define BLUE_PIN 3 // Digital pin connected to the blue LED of RGB
#define BUZZER_PIN 9 // Digital pin connected to the buzzer
#define I2C_ADDR 0x27
#define LCD_COLUMNS 10
#define LCD_LINES 11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
lcd.begin(16, 2);
dht.begin();
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.clear();
lcd.setCursor(0, 0);
if (temperature > 15.0) {
// Red light, buzzer, and display temperature and humidity
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
tone(BUZZER_PIN, 1000); // Turn on buzzer
lcd.print("Temp > 15C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C Humidity: ");
lcd.print(humidity);
} else if (temperature == 15.0) {
// Blue light and display temperature and humidity
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
noTone(BUZZER_PIN); // Turn off buzzer
lcd.print("Temp = 15C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C Humidity: ");
lcd.print(humidity);
} else {
// Green light and display temperature and humidity
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
noTone(BUZZER_PIN); // Turn off buzzer
lcd.print("Temp < 15C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C Humidity: ");
lcd.print(humidity);
}
delay(2000); // Delay for 2 seconds between readings
}