#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define RELAY_1 3
#define RELAY_2 4
#define RELAY_3 5
#define RELAY_4 6
#define BUTTON_TEMP_UP 7
#define BUTTON_TEMP_DOWN 8
#define BUTTON_HUMID_UP 9
#define BUTTON_HUMID_DOWN 10
LiquidCrystal_I2C lcd(0x27, 16, 2); // Change 0x27 to your I2C address
float setTemperature = 38.0; // Default set temperature
float setHumidity = 50.0; // Default set humidity
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(RELAY_1, OUTPUT);
pinMode(RELAY_2, OUTPUT);
pinMode(RELAY_3, OUTPUT);
pinMode(RELAY_4, OUTPUT);
pinMode(BUTTON_TEMP_UP, INPUT_PULLUP);
pinMode(BUTTON_TEMP_DOWN, INPUT_PULLUP);
pinMode(BUTTON_HUMID_UP, INPUT_PULLUP);
pinMode(BUTTON_HUMID_DOWN, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
lcd.setCursor(6, 0);
lcd.print(temperature);
lcd.print(" C ");
lcd.setCursor(9, 1);
lcd.print(humidity);
lcd.print(" % ");
if (digitalRead(BUTTON_TEMP_UP) == LOW) {
setTemperature++;
delay(500);
}
if (digitalRead(BUTTON_TEMP_DOWN) == LOW) {
setTemperature--;
delay(500);
}
if (digitalRead(BUTTON_HUMID_UP) == LOW) {
setHumidity++;
delay(500);
}
if (digitalRead(BUTTON_HUMID_DOWN) == LOW) {
setHumidity--;
delay(500);
}
// Control relays based on conditions (e.g., turn on heating or cooling)
if (temperature < setTemperature) {
digitalWrite(RELAY_1, HIGH);
digitalWrite(RELAY_2, LOW);
} else {
digitalWrite(RELAY_1, LOW);
digitalWrite(RELAY_2, HIGH);
}
if (humidity < setHumidity) {
digitalWrite(RELAY_3, HIGH);
digitalWrite(RELAY_4, LOW);
} else {
digitalWrite(RELAY_3, LOW);
digitalWrite(RELAY_4, HIGH);
}
}