#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <RTClib.h>
#define DHT_SENSOR_PIN 23
#define DHT_SENSOR_TYPE DHT22
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
RTC_DS1307 rtc;
#define SPEAKER_PIN (5)
#define POT_PIN (34)
void setup() {
dht_sensor.begin();
lcd.init();
lcd.backlight();
Wire.begin();
rtc.begin();
pinMode(POT_PIN, INPUT);
}
void loop() {
float humi = dht_sensor.readHumidity();
float tempC = dht_sensor.readTemperature();
int alarmTemp = map(analogRead(POT_PIN), 0, 1023, 0, 255);
if (isnan(tempC) || isnan(humi)) {
lcd.setCursor(0, 0);
lcd.print("Failed");
} else {
lcd.setCursor(0, 0);
lcd.print("T");
lcd.print(tempC);
lcd.print("°C");
lcd.setCursor(0, 1);
lcd.print("H");
lcd.print(humi);
lcd.print("%");
DateTime now = rtc.now();
lcd.setCursor(10, 0);
lcd.print(now.hour());
lcd.print(':');
lcd.print(now.minute());
if (tempC > alarmTemp)
{
tone(SPEAKER_PIN, 392, 500);
tone(SPEAKER_PIN, 330, 500);
tone(SPEAKER_PIN, 330, 500);
delay(500);
noTone(SPEAKER_PIN);
}
}
delay(2000);
lcd.clear();
}