#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define MOTOR_PIN 9
#define BUZZER_PIN 8
#define FAN_THRESHOLD 30.0 // Fan starts at 30°C
#define ALARM_THRESHOLD 40.0 // Buzzer sounds at 40°C
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(MOTOR_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Temp Controller");
delay(2000);
lcd.clear();
}
void loop() {
float temp = dht.readTemperature();
if (isnan(temp)) {
lcd.setCursor(0, 0);
lcd.print("Sensor Error! ");
return;
}
// Display temperature
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp, 1);
lcd.print((char)223);
lcd.print("C ");
// Temperature logic
lcd.setCursor(0, 1);
if (temp >= ALARM_THRESHOLD) {
digitalWrite(MOTOR_PIN, HIGH);
tone(BUZZER_PIN, 1000); // 1000Hz tone sound
lcd.print("Fan:ON | WARN! ");
} else if (temp >= FAN_THRESHOLD) {
digitalWrite(MOTOR_PIN, HIGH);
noTone(BUZZER_PIN); // Turn off sound
lcd.print("Fan: ON ");
} else {
digitalWrite(MOTOR_PIN, LOW);
noTone(BUZZER_PIN); // Turn off sound
lcd.print("Fan: OFF ");
}
delay(1000);
}