#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// กำหนดขาและชนิดของเซ็นเซอร์ DHT
#define DHTPIN 2
#define DHTTYPE DHT22
// กำหนดขาของรีเลย์
#define RELAY1_PIN 13
#define RELAY2_PIN 12
#define RELAY3_PIN 11
// สร้าง object ของ DHT
DHT dht(DHTPIN, DHTTYPE);
// สร้าง object ของจอ LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// เริ่มต้นการทำงานของจอ LCD
lcd.init();
lcd.backlight();
// เริ่มต้นการทำงานของ DHT
dht.begin();
// ตั้งค่าขารีเลย์เป็นขาออก
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
pinMode(RELAY3_PIN, OUTPUT);
// ปิดรีเลย์ทั้งหมดก่อน
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, LOW);
digitalWrite(RELAY3_PIN, LOW);
}
void loop() {
}
void autofarm(){
// อ่านค่าอุณหภูมิและความชื้นจาก DHT22
float h = dht.readHumidity();
float t = dht.readTemperature();
// ตรวจสอบว่าการอ่านค่าถูกต้องหรือไม่
if (isnan(h) || isnan(t)) {
lcd.setCursor(0, 0);
lcd.print("Error reading ");
lcd.setCursor(0, 1);
lcd.print("DHT22 sensor");
return;
}
// แสดงค่าอุณหภูมิและความชื้นบนจอ LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(h);
lcd.print(" %");
// ควบคุมรีเลย์ตามค่าอุณหภูมิ
if (t > 38) {
digitalWrite(RELAY1_PIN, HIGH); // เปิดรีเลย์ 1
} else {
digitalWrite(RELAY1_PIN, LOW); // ปิดรีเลย์ 1
}
if (h < 60) {
digitalWrite(RELAY2_PIN, HIGH); // เปิดรีเลย์ 2
} else {
digitalWrite(RELAY2_PIN, LOW); // ปิดรีเลย์ 2
}
if (t < 30) {
digitalWrite(RELAY3_PIN, HIGH); // เปิดรีเลย์ 3
} else {
digitalWrite(RELAY3_PIN, LOW); // ปิดรีเลย์ 3
}
// หน่วงเวลา 2 วินาทีก่อนอ่านค่าใหม่
delay(2000);
}