#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_PIN = 13;
int VAR_RESISTOR_PIN = 32;
int relayState = digitalRead(RELAY_PIN);
void setup() {
Serial.begin(9600);
lcd.init(); // เริ่มต้นจอแอลซีดี
lcd.backlight();
Serial.println(F("DHTxx test!"));
dht.begin();
pinMode(RELAY_PIN, 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() {
int relayState = digitalRead(RELAY_PIN);
float temp = dht.readTemperature();
float pot_value = analogRead(VAR_RESISTOR_PIN) * 100.0 / 4000.0;
DateTime now = rtc.now();
lcd.setCursor(0, 0);
lcd.print("T");
lcd.print(temp);
lcd.print("C ");
lcd.setCursor(8, 0);
lcd.print("P");
lcd.print(pot_value);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.println();
if (relayState == 1) {
lcd.setCursor(9, 1);
lcd.print("ON");
Serial.println("Relay: ON");
} else {
lcd.setCursor(9, 1);
lcd.print("OFF");
Serial.println("Relay: OFF");
}
if (temp < 30 && pot_value < 60 && now.second() % 9 == 0) {
digitalWrite(RELAY_PIN, 1);
int startSeconds = now.second();
while (now.second() - startSeconds < 3) {
now = rtc.now();
}
digitalWrite(RELAY_PIN, 0);
}
else {
digitalWrite(RELAY_PIN,0 );
}
Serial.print("Temp:");
Serial.print(temp);
Serial.print("Potentiometer");
Serial.print(pot_value);
Serial.print("%");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print(':');
delay(500);// รอ 1 วินาที
}