#include "SPI.h"
#include <Adafruit_ILI9341.h>
//#include "showtft.h" //รูป
//#include "TimeON.h" //รูป
//#include "TimeOFF.h" //รูป
#define TFT_DC 4
#define TFT_CS 5
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
//----------------------RTC--------------------------------//
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
//-------------------ตัวแปร------------------------------//
#define Ry 14
#define BUZ 13
#define sw1 12
#define sw2 27
#define sw3 26
#define sw4 25
byte SetH, SetM, SetS = 0;
byte SetH2, SetM2, SetS2 = 0;
boolean st_SetH, st_SetM, st_SetS, st_SetHok, st_SetMok, st_SetSok = 0;
/***********************void setup()***********************************/
void setup() {
pinMode(Ry, OUTPUT);
pinMode(BUZ, OUTPUT);
pinMode(sw1, INPUT_PULLUP);
pinMode(sw2, INPUT_PULLUP);
pinMode(sw3, INPUT_PULLUP);
pinMode(sw4, INPUT_PULLUP);
Serial.begin(115200);
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
//tft.drawRGBBitmap(0, 0, (uint16_t *)dragonBitmap, DRAGON_WIDTH, DRAGON_HEIGHT);
};
/************************void loop() **********************************/
void loop() {
DateTime now = rtc.now();
if (digitalRead(sw3) == 0) { //กดsw1ตั้งเวลา
delay(3000);
if (digitalRead(sw3) == 0) {
tone(BUZ, 1000, 250);
tft.fillScreen(ILI9341_BLACK);
// tft.drawRGBBitmap(0, 0, (uint16_t *)dragonBitmap1, DRAGON_WIDTH1, DRAGON_HEIGHT1);
st_SetH = 1;
Serial.println("------------------------------");
Serial.println(" Set Timer Mode");
Serial.println("------------------------------");
Serial.println("--> Set Hours");
//-----------------ตั้งเวลา Hours ชม.---------------------------------//
while (st_SetH == 1) {
if (digitalRead(sw1) == 0) {
while (digitalRead(sw1) == 0) delay(10);
tone(BUZ, 1000, 100);
SetH++;
if (SetH >= 24) SetH = 24;
Serial.println("Hours : " + String(SetH));
tft.setCursor(220, 85);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetH) + " ");
delay(50);
} //SetH++
if (digitalRead(sw2) == 0) {
while (digitalRead(sw2) == 0) delay(10);
// while(digitalRead(sw1)==0)delay(10);
tone(BUZ, 1000, 100);
SetH--;
if (SetH == 255) SetH = 0;
Serial.println("Hours : " + String(SetH));
tft.setCursor(220, 85);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetH) + " ");
delay(50);
} //SetH--
if (digitalRead(sw3) == 0) {
delay(1000);
if (digitalRead(sw3) == 0) {
tone(BUZ, 1000, 100);
st_SetH = 0;
st_SetM = 1;
Serial.println("Set Hours Ok");
Serial.println("--> Set Minute");
}
}
} //while SetH
while (st_SetM == 1) {
if (digitalRead(sw1) == 0) {
while (digitalRead(sw1) == 0) delay(10);
tone(BUZ, 1000, 100);
SetM++;
if (SetM >= 60) SetM = 60;
Serial.println("Minute : " + String(SetM));
tft.setCursor(220, 145);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetM) + " ");
delay(50);
} //SetM++
if (digitalRead(sw2) == 0) {
while (digitalRead(sw2) == 0) delay(10);
// while(digitalRead(sw1)==0)delay(10);
tone(BUZ, 1000, 100);
SetM--;
if (SetM == 255) SetM = 0;
Serial.println("Minute : " + String(SetM));
tft.setCursor(220, 145);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetM) + " ");
delay(50);
} //SetM--
if (digitalRead(sw3) == 0) {
delay(1000);
if (digitalRead(sw3) == 0) {
tone(BUZ, 1000, 100);
st_SetM = 0;
st_SetS = 1;
Serial.println("Set Minute Ok");
Serial.println("--> Set Second");
}
}
} //while SetM
while (st_SetS == 1) {
if (digitalRead(sw1) == 0) {
while (digitalRead(sw1) == 0) delay(10);
tone(BUZ, 1000, 100);
SetS++;
if (SetS >= 60) SetS = 60;
Serial.println("Second : " + String(SetS));
tft.setCursor(220, 205);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetS) + " ");
delay(50);
} //SetS++
if (digitalRead(sw2) == 0) {
while (digitalRead(sw2) == 0) delay(10);
// while(digitalRead(sw1)==0)delay(10);
tone(BUZ, 1000, 100);
SetS--;
if (SetS == 255) SetS = 0;
Serial.println("Second : " + String(SetS));
tft.setCursor(220, 205);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetS) + " ");
delay(50);
} //SetS--
if (digitalRead(sw3) == 0) {
tone(BUZ, 1000, 100);
delay(1000);
if (digitalRead(sw3) == 0) {
tft.fillScreen(ILI9341_BLACK);
// tft.drawRGBBitmap(0, 0, (uint16_t *)dragonBitmap, DRAGON_WIDTH, DRAGON_HEIGHT);
st_SetS = 0;
Serial.println("Set second Ok");
}
}
} //while SetS
} //เช็คการกด sw3ค้าง
} //ifกดsw3วิ
//---------------sw4-TIMEOFF------------------------//
if (digitalRead(sw4) == 0) { //กดsw1ตั้งเวลา
delay(3000);
if (digitalRead(sw4) == 0) {
tone(BUZ, 1000, 250);
tft.fillScreen(ILI9341_BLACK);
//tft.drawRGBBitmap(0, 0, (uint16_t *)dragonBitmap2, DRAGON_WIDTH2, DRAGON_HEIGHT2);
st_SetH = 1;
Serial.println("------------------------------");
Serial.println(" Set Timer Mode");
Serial.println("------------------------------");
Serial.println("--> Set Hours");
//-----------------ตั้งเวลา Hours ชม.---------------------------------//
while (st_SetH == 1) {
if (digitalRead(sw1) == 0) {
while (digitalRead(sw1) == 0) delay(10);
tone(BUZ, 1000, 100);
SetH2++;
if (SetH2 >= 24) SetH2 = 24;
Serial.println("Hours : " + String(SetH2));
tft.setCursor(230, 85);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetH2) + " ");
delay(50);
} //SetH++
if (digitalRead(sw2) == 0) {
while (digitalRead(sw2) == 0) delay(10);
// while(digitalRead(sw1)==0)delay(10);
tone(BUZ, 1000, 100);
SetH2--;
if (SetH2 == 255) SetH2 = 0;
Serial.println("Hours : " + String(SetH2));
tft.setCursor(230, 85);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetH2) + " ");
delay(50);
} //SetH--
if (digitalRead(sw4) == 0) {
delay(1000);
if (digitalRead(sw4) == 0) {
tone(BUZ, 1000, 100);
st_SetH = 0;
st_SetM = 1;
Serial.println("Set Hours Ok");
Serial.println("--> Set Minute");
}
}
} //while SetH
while (st_SetM == 1) {
if (digitalRead(sw1) == 0) {
while (digitalRead(sw1) == 0) delay(10);
tone(BUZ, 1000, 100);
SetM2++;
if (SetM2 >= 60) SetM2 = 60;
Serial.println("Minute : " + String(SetM2));
tft.setCursor(230, 145);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetM2) + " ");
delay(50);
} //SetM++
if (digitalRead(sw2) == 0) {
while (digitalRead(sw2) == 0) delay(10);
// while(digitalRead(sw1)==0)delay(10);
tone(BUZ, 1000, 100);
SetM2--;
if (SetM2 == 255) SetM2 = 0;
Serial.println("Minute : " + String(SetM2));
tft.setCursor(230, 145);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetM2) + " ");
delay(50);
} //SetM--
if (digitalRead(sw4) == 0) {
tone(BUZ, 1000, 100);
delay(1000);
if (digitalRead(sw4) == 0) {
st_SetM = 0;
st_SetS = 1;
Serial.println("Set Minute Ok");
Serial.println("--> Set Second");
}
}
} //while SetM
while (st_SetS == 1) {
if (digitalRead(sw1) == 0) {
while (digitalRead(sw1) == 0) delay(10);
tone(BUZ, 1000, 100);
SetS2++;
if (SetS2 >= 60) SetS2 = 60;
Serial.println("Second : " + String(SetS2));
tft.setCursor(230, 205);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetS2) + " ");
delay(50);
} //SetS++
if (digitalRead(sw2) == 0) {
while (digitalRead(sw2) == 0) delay(10);
// while(digitalRead(sw1)==0)delay(10);
tone(BUZ, 1000, 100);
SetS2--;
if (SetS2 == 255) SetS2 = 0;
Serial.println("Second : " + String(SetS2) + " ");
tft.setCursor(230, 205);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(2);
tft.println(String(SetS2) + " ");
delay(50);
} //SetS--
if (digitalRead(sw4) == 0) {
tone(BUZ, 1000, 100);
delay(1000);
if (digitalRead(sw4) == 0) {
tft.fillScreen(ILI9341_BLACK);
//tft.drawRGBBitmap(0, 0, (uint16_t *)dragonBitmap, DRAGON_WIDTH, DRAGON_HEIGHT);
st_SetS = 0;
Serial.println("Set second Ok");
}
}
} //while SetS
} //เช็คการกด sw4ค้าง
} //ifกดsw4วิ
//------------------------------------------//
//timeON
if (now.hour() == SetH && now.minute() == SetM && now.second() == SetS) {
digitalWrite(Ry, HIGH);
}
//timeOFF
if (now.hour() == SetH2 && now.minute() == SetM2 && now.second() == SetS2) {
digitalWrite(Ry, LOW);
}
//TimeON
tft.setCursor(130, 100);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(3);
tft.println(String(SetH) + ":" + String(SetM) + ":" + String(SetS));
//TimeOFF
tft.setCursor(130, 170);
tft.setTextColor(ILI9341_BLACK, ILI9341_WHITE);
tft.setTextSize(3);
tft.println(String(SetH2) + ":" + String(SetM2) + ":" + String(SetS2));
//TCurrent Time
tft.setCursor(187, 220);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLUE);
tft.setTextSize(2);
tft.println(String(now.hour()) + ":" + String(now.minute()) + ":" + String(now.second()));
//Day Nonth year
tft.setCursor(100, 20);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLUE);
tft.setTextSize(2);
tft.println(String(now.day()));
tft.setCursor(185, 20);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLUE);
tft.setTextSize(2);
tft.println(String(now.month()));
tft.setCursor(265, 20);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLUE);
tft.setTextSize(2);
tft.println(String(now.year()));
Serial.print("Cerrent Timer " + String(now.hour()) + ":" + String(now.minute()) + ":" + String(now.second()));
Serial.print(" Timer ON " + String(SetH) + ":" + String(SetM) + ":" + String(SetS));
Serial.println(" Timer OFF " + String(SetH2) + ":" + String(SetM2) + ":" + String(SetS2));
delay(1000);
};