#include <DHT.h>
#include <LiquidCrystal.h>
#define DHT_PIN 2 // DHT22 data pin
#define BUZZER_PIN 9 // Buzzer pin
#define LED_RED_PIN 6 // LED red pin
#define LED_GREEN_PIN 7 // LED green pin
#define LCD_RS 12 // LCD RS pin
#define LCD_EN 11 // LCD EN pin
#define LCD_D4 5 // LCD D4 pin
#define LCD_D5 4 // LCD D5 pin
#define LCD_D6 3 // LCD D6 pin
#define LCD_D7 2 // LCD D7 pin
DHT dht(DHT_PIN, DHT22);
LiquidCrystal_I2C lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_RED_PIN, OUTPUT);
pinMode(LED_GREEN_PIN, OUTPUT);
lcd.begin(16, 2); // Initialize LCD with 16 columns and 2 rows
lcd.setCursor(0, 0); // Set cursor to top-left corner
}
void loop() {
float temperature = dht.readTemperature();
if (isnan(temperature)) {
Serial.println("Error reading from DHT22 sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
lcd.setCursor(0, 0); // Set cursor to top-left corner
lcd.print("Temp: ");
lcd.print(temperature);
lcd.write(byte(0xDF)); // Degree symbol
lcd.print("C ");
if (temperature > 100) {
// Turn on the buzzer and LED red
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED_RED_PIN, HIGH);
digitalWrite(LED_GREEN_PIN, LOW);
} else if (temperature > 50) {
// Turn off the buzzer and LED red, turn on LED green
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_RED_PIN, LOW);
digitalWrite(LED_GREEN_PIN, HIGH);
} else {
// Turn off all LEDs and buzzer
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_RED_PIN, LOW);
digitalWrite(LED_GREEN_PIN, LOW);
}
delay(1000);
}