#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS3231 rtc;
//const char* week_days[7] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
const String week_days[7] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
rtc.begin();
//rtc.adjust(DateTime(F(__DATE__),F(__TIME__)));
}
void loop() {
DateTime now = rtc.now();
char t[17]="";
sprintf(t, "%04d-%02d-%02d ", now.year(), now.month(), now.day());
lcd.setCursor(0, 0);
lcd.print(t);
lcd.print(week_days[now.dayOfTheWeek()]);
/*
lcd.print(now.year());
lcd.print("-");
lcd.print(now.month());
lcd.print("-");
lcd.print(now.day());
lcd.print(" ");
lcd.print(week_days[now.dayOfTheWeek()]);
*/
sprintf(t, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(0, 1);
lcd.print(t);
/*
lcd.print(now.hour()/10);
lcd.print(now.hour()%10);
lcd.print(":");
lcd.print(now.minute()/10);
lcd.print(now.minute()%10);
lcd.print(":");
lcd.print(now.second()/10);
lcd.print(now.second()%10);
*/
delay(1000);
}
/*
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS3231 rtc;
// 사용자정의 문자용 비트맵 이미지
byte char_a[8]={B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111};
byte char_b[8]={B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000};
byte char_c[8]={B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111};
byte char_d[8]={B11111, B11111, B00000, B00000, B00000, B00000, B11111, B11111};
byte char_f[8]={B00000, B00000, B00011, B00011, B00011, B00011, B00000, B00000};
byte char_g[8]={B00000, B00000, B10000, B10000, B10000, B10000, B00000, B00000};
// 큰 숫자 표시용 사용자정의 문자
int big_num[10][6]={
{1, 2, 1, 1, 3, 1}, //0
{2, 1, 32, 3, 1, 3}, //1
{4, 4, 1, 1, 3, 3}, //2
{4, 4, 1, 3, 3, 1}, //3
{1, 3, 1, 32, 32, 1}, //4
{1, 4, 4, 3, 3, 1}, //5
{1, 4, 4, 1, 3, 1}, //6
{1, 2, 1, 32, 32, 1}, //7
{1, 4, 1, 1, 3, 1}, //8
{1, 4, 1, 3, 3, 1} //9
};
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
rtc.begin();
//사용자문자 정의
lcd.createChar(1, char_a);
lcd.createChar(2, char_b);
lcd.createChar(3, char_c);
lcd.createChar(4, char_d);
lcd.createChar(6, char_f);
lcd.createChar(7, char_g);
}
void loop() {
DateTime now = rtc.now();
disp_num(0, now.hour()/10);
disp_num(4, now.hour()%10);
disp_colon(7);
disp_num(9, now.minute()/10);
disp_num(13, now.minute()%10);
}
void disp_num(int pos, int num){
lcd.setCursor(pos, 0);
lcd.write(big_num[num][0]);
lcd.write(big_num[num][1]);
lcd.write(big_num[num][2]);
lcd.setCursor(pos, 1);
lcd.write(big_num[num][3]);
lcd.write(big_num[num][4]);
lcd.write(big_num[num][5]);
}
void disp_colon(int pos){
if(millis()/500%2){
lcd.setCursor(pos,0);
lcd.write(32);
lcd.write(32);
lcd.setCursor(pos,1);
lcd.write(32);
lcd.write(32);
}else{
lcd.setCursor(pos,0);
lcd.write(6);
lcd.write(7);
lcd.setCursor(pos,1);
lcd.write(6);
lcd.write(7);
}
}
*/