//ติดตั้ง lcd I2C
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//ติดตั้ง rtc(real time clock)
#include <RTClib.h>
RTC_DS1307 rtc;
int day;
int month;
int year;
int hour;
int minute;
int second;
int dnum;
//ประกาศหม้อแปลงกับขา
int tou = 15;
int tod = 2;
//กำหนดข้อมูล 2 arrays สำหรับแสดงวันเป็น wording
char dayOfTheWeek[7][6] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
void setup() {
//เริ่มทำงาน lcd
lcd.init();
lcd.backlight();
//เริมทำงาน rtc
rtc.begin();
pinMode(4, OUTPUT);
pinMode(15, OUTPUT);
pinMode(2, OUTPUT);
} ////////////////////end setup
void loop() {
date_time(); //เรียกใช้คำสั่งแสดงวันเวลา ที่เราสร้างไว้ด้านล่าง
if(dnum>=1 && dnum<=5){ //กำหนดเงื่อนไข active สำหรับ จ-ศ
if(hour>=9 && hour<22){ //กำหนดเงื่อนไข active เมื่อเวลา 9.00-22.00 น.
digitalWrite(tod, HIGH);
digitalWrite(tou, LOW);
}else{
digitalWrite(tod, LOW);
digitalWrite(tou, HIGH);
}
}else{
digitalWrite(tod, LOW);
digitalWrite(tou, HIGH);
}
} ///////////////////end loop
/////////////////////////////////Functions ที่เราสร้างเอง เพื่อสะดวกในการเรียกใช้
//สร้างคำสั่งแสดงวันที่ เวลา
void date_time(){
DateTime now = rtc.now(); //คำสั่งให้ rtc แสดงเวลาปัจจุบัน
day=now.day();
month=now.month();
year=now.year();
//hour=now.hour(); //หยุดเวลาจริง เพื่อ test การเขียนไขใน void loop
hour=21; //สมมติเวลาเพื่อ test การเขียนไขใน void loop
minute=now.minute();
second=now.second();
///ประกาศให้ dnum เท่ากับ คำสั่งวันปัจจุบัน แต่ผลจะเป็นเลขลำดับ โดย sun =0 เรียงไปเรื่อยๆ
//ดังนัั้น ถ้าจะแสดงเป็น sun,mon.. จึงต้องสร้าง array แล้วเรียกมาใช้อีกที
//หยุดวันจริง เพื่อ test การเขียนไขใน void loop
//dnum = now.dayOfTheWeek();
dnum=6; //สมมติเวลาเพื่อ test การเขียนไขใน void loop
lcd.setCursor(0,0);
//กำหนดให้แสดงค่าวัน ตามข้อมูล array ที่เราสร้างไว้ที่ header
lcd.print(dayOfTheWeek[dnum]);
lcd.setCursor(0,1);
lcd.print("Time");
lcd.setCursor(5,0);
if(day<=9){
lcd.print("0");
}
lcd.print(day);
lcd.setCursor(7,0);
lcd.print("/");
lcd.setCursor(8,0);
if(month<=9){
lcd.print("0");
}
lcd.print(month);
lcd.setCursor(10,0);
lcd.print("/");
lcd.setCursor(11,0);
///year+543 เพื่อให้แสดงเป็น พ.ศ.
lcd.print(year+543);
lcd.setCursor(5,1);
if(hour<=9){
lcd.print("0");
}
lcd.print(hour);
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(8,1);
if(minute<=9){
lcd.print("0");
}
lcd.print(minute);
lcd.setCursor(10,1);
lcd.print(":");
lcd.setCursor(11,1);
if(second<=9){
lcd.print("0");
}
lcd.print(second);
}