#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHTesp dht;
const int relayRedPin = 25; // ขาที่ต่อรีเลย์สีแดง
const int relayGreenPin = 26; // ขาที่ต่อรีเลย์สีเขียว
void setup() {
Serial.begin(115200);
Serial.println("DHT22 and LCD example");
// Initialize DHT sensor
dht.setup(17, DHTesp::DHT22); // ขาของ DHT22 ตรงงขาที่ 17
Serial.println("DHT22 initiated");
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("T: ");
lcd.setCursor(0, 1);
lcd.print("H: ");
// Initialize relays
pinMode(relayRedPin, OUTPUT);
pinMode(relayGreenPin, OUTPUT);
}
void loop() {
// อ่านค่าอุณหภูมิและความชื้น
float temperature = dht.getTemperature();
float humidity = dht.getHumidity();
// แสดงค่าอุณหภูมิที่ตรงที่หน้าจอ LCD
lcd.setCursor(13, 0);
lcd.print(temperature);
//lcd.print(" C ");
// แสดงค่าความชื้นที่ ตรงที่หนาจอLCD
lcd.setCursor(10, 1);
lcd.print(humidity);
//lcd.print(" % ");
// ตรวจสอบเงื่อนไขและควบคุมการทำงานของรีเลย์
if (temperature > 20) {
digitalWrite(relayRedPin, 1); // เปิดรีเลย์สีแดง
lcd.setCursor(1, 0);
lcd.print(" RED ON ");
} else {
digitalWrite(relayRedPin, 0); // ปิดรีเลย์ตรงงสีแดง
lcd.setCursor(1, 0);
lcd.print(" RED OFF");
}
if (humidity < 40) {
digitalWrite(relayGreenPin, 1); // เปิดรีเลย์สีเขียว
lcd.setCursor(1, 1);
lcd.print(" FAN ON ");
} else {
digitalWrite(relayGreenPin, 0); // ปิดรีเลย์สีเขียว
lcd.setCursor(1, 1);
lcd.print(" FAN OFF");
}
delay(200);
}