#include <Wire.h> // ไลบรารีเพื่อใช้งาน I2C
#include <DHT.h> // ไลบรารีเพื่อใช้งาน DHT22
#include <DHT_U.h> // ไลบรารีเพื่อใช้งาน DHT22
#include <Adafruit_Sensor.h> // ไลบรารีเพื่อใช้งาน DHT22
#define DHTPIN 2 // กำหนดขาของ DHT22
#define DHTTYPE DHT22 // กำหนดชนิดของ DHT22
DHT_Unified dht(DHTPIN, DHTTYPE); // กำหนด DHT22
#define LED_PIN 4 // กำหนดขาของ LED
#define RELAY_PIN_1 7 // กำหนดขาของ Relay 1
#define RELAY_PIN_2 8 // กำหนดขาของ Relay 2
#define RELAY_PIN_3 9 // กำหนดขาของ Relay 3
void setup() {
Serial.begin(9600); // เริ่มต้นใช้งาน Serial Monitor
pinMode(LED_PIN, OUTPUT); // กำหนดขา LED เป็น OUTPUT
pinMode(RELAY_PIN_1, OUTPUT); // กำหนดขา Relay 1 เป็น OUTPUT
pinMode(RELAY_PIN_2, OUTPUT); // กำหนดขา Relay 2 เป็น OUTPUT
pinMode(RELAY_PIN_3, OUTPUT); // กำหนดขา Relay 3 เป็น OUTPUT
Wire.begin(); // เริ่มต้นใช้งาน I2C
dht.begin(); // เริ่มต้นใช้งาน DHT22
}
void loop() {
sensors_event_t event;
dht.temperature().getEvent(&event); // อ่านค่าอุณหภูมิจาก DHT22
if (!isnan(event.temperature)) { // ตรวจสอบว่ามีข้อมูลอุณหภูมิหรือไม่
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println(" °C");
if (event.temperature > 28.0) { // ถ้าอุณหภูมิมากกว่า 28 องศาเซลเซียส
digitalWrite(LED_PIN, HIGH); // เปิด LED
digitalWrite(RELAY_PIN_1, HIGH); // เปิด Relay 1
digitalWrite(RELAY_PIN_2, HIGH); // เปิด Relay 2
digitalWrite(RELAY_PIN_3, HIGH); // เปิด Relay 3
} else {
digitalWrite(LED_PIN, LOW); // ปิด LED
digitalWrite(RELAY_PIN_1, LOW); // ปิด Relay 1
digitalWrite(RELAY_PIN_2, LOW); // ปิด Relay 2
digitalWrite(RELAY_PIN_3, LOW); // ปิด Relay 3
}
} else {
Serial.println("Failed to read from DHT sensor!");
}
delay(2000); // หน่วงเวลา 2 วินาที ก่อนที่จะอ่านข้อมูลอุณหภูมิใหม่
}