#include <Wire.h>
#include <DHT.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
int led = 13;
#define DHTPIN 21
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27,16,2);
const int relayPin = 13;
const int potPin = A0;
float vol = 2.1;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
dht.begin();
lcd.begin(16, 2);
pinMode(led, OUTPUT);
pinMode(relayPin, OUTPUT);
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
}
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float vol = analogRead(potPin) * (5.0 / 1023.0);
DateTime now = rtc.now();
// แสดงผลที่ Serial Monitor
Serial.print("Hum: ");
Serial.print(humidity);
Serial.print("% | Vol: ");
Serial.print(vol);
Serial.print("V | Time: ");
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.print(":");
Serial.print(now.second());
Serial.print(" | Relay Status: ");
// แสดงผลที่ LCD
lcd.setCursor(0, 0);
lcd.print("H:");
lcd.print(humidity);
lcd.print("%");
lcd.print("V:");
lcd.print(vol);
lcd.print("V");
lcd.setCursor(0, 1);
lcd.print("RLY:");
lcd.print("T:");
lcd.print(now.hour());
lcd.print(":");
lcd.print(now.minute());
lcd.print(":");
lcd.print(now.second());
if (humidity < 40 && vol < 2.1) {
digitalWrite(relayPin, HIGH); // เปิดการทำงาน Relay
// เช็คเวลา
if (now.second() % 10 == 0 && now.second() < 10) {
// ทำงานตามเวลาที่ตั้งไว้และหยุดหลังผ่านไป 10 วินาที
digitalWrite(relayPin, LOW); // ปิดการทำงาน Relay
// แสดงสถานะ Relay ที่ Serial Monitor
Serial.println("O");
lcd.setCursor(0, 1);
lcd.print("RLY:O");
}
} else if (humidity > 40 && vol > 2.1) {
digitalWrite(relayPin, LOW); // ปิดการทำงาน Relay
// แสดงสถานะ Relay ที่ Serial Monitor
Serial.println("F");
lcd.setCursor(0, 1);
lcd.print("RLY:F");
}
delay(1000);
}