#include "DHT.h"
#include "RTClib.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 18
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
int relay = 13;
int vr = 32;
void setup() {
Serial.begin(9600);
lcd.init(); // เริ่มต้นจอแอลซีดี
lcd.backlight();
Serial.println(F("DHTxx test!"));
dht.begin();
pinMode(relay, OUTPUT);
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1)
;
}
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
float h = dht.readHumidity();
int val = analogRead(vr);
float voltage = val * 3.3 / 4096;
DateTime now = rtc.now();
int currentSecond = now.second();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(h);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Voltage: ");
lcd.print(voltage);
lcd.print("V");
if (h < 40 && voltage > 2.8) {
if (now.hour() == 11 && now.minute() == 59 && now.second() == 0) {
digitalWrite(relay, 1);
} else if (now.hour() == 11 && now.minute() == 59 && now.second() == 15) {
digitalWrite(relay, 0);
}
} else {
digitalWrite(relay, 0);
delay(10);
}
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.println();
lcd.setCursor(0, 1);
lcd.print(digitalRead(relay));
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%, Voltage: ");
Serial.print(voltage);
Serial.print("V, Relay: ");
Serial.println(digitalRead(relay));
delay(1000); // รอ 1 วินาที
}