#include <LCD_I2C.h>
#include <DHT.h>
LCD_I2C lcd(0x27, 20, 4);
#define DHTPIN1 26
#define DHTTYPE1 DHT22
#define DHTPIN2 25
#define DHTTYPE2 DHT22
#define DHTPIN3 14
#define DHTTYPE3 DHT22
DHT dht1(DHTPIN1,DHTTYPE1);
DHT dht2(DHTPIN2,DHTTYPE2);
DHT dht3(DHTPIN3,DHTTYPE3);
int relay1 = 18;
int relay2 = 19;
int relay3 = 23;
void setup() {
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
dht1.begin();
dht2.begin();
dht3.begin();
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.setCursor(10, 0);
lcd.print("H1:");
lcd.setCursor(0, 1);
lcd.print("T2:");
lcd.setCursor(10, 1);
lcd.print("H2:");
lcd.setCursor(0, 2);
lcd.print("T3:");
lcd.setCursor(10, 2);
lcd.print("H3:");
}
void loop() {
delay(2000);
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();
if (isnan(h1) || isnan(t1)) {
lcd.println("Failed to read from DHT1 sensor!");
}
else
{
lcd.setCursor(0, 0);
lcd.print("T1: ");
lcd.setCursor(3, 0);
lcd.print(t1,1);
lcd.print(" C ");
lcd.setCursor(10, 0);
lcd.print("H1:");
lcd.setCursor(13, 0);
lcd.print(h1,1);
lcd.print(" % ");
if (t1 >= 20){
digitalWrite(relay1, HIGH);
}
else{
digitalWrite(relay1, LOW);
}
}
if (isnan(h2) || isnan(t2)) {
lcd.println("Failed to read from DHT2 sensor!");
}
else
{
lcd.setCursor(0, 1);
lcd.print("T2:");
lcd.setCursor(3, 1);
lcd.print(t2,1);
lcd.print(" C ");
lcd.setCursor(10, 1);
lcd.print("H2:");
lcd.setCursor(13, 1);
lcd.print(h2,1);
lcd.print(" % ");
if (t2 >= 30){
digitalWrite(relay2, HIGH);
}
else{
digitalWrite(relay2, LOW);
}
}
if (isnan(h3) || isnan(t3)) {
lcd.println("Failed to read from DHT2 sensor!");
}
else
{
lcd.setCursor(0, 2);
lcd.print("T3:");
lcd.setCursor(3, 2);
lcd.print(t3,1);
lcd.print(" C ");
lcd.setCursor(10, 2);
lcd.print("H3:");
lcd.setCursor(13, 2);
lcd.print(h3,1);
lcd.print(" % ");
if (t3 >= 35){
digitalWrite(relay3, HIGH);
}
else{
digitalWrite(relay3, LOW);
}
}
}