#include <U8g2lib.h>
#include <RTClib.h>
#include <Wire.h>
const unsigned long ONE_SEC = 1000;
const char* DOW[7] = {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
};
unsigned long prevTime = 0;
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, U8X8_PIN_NONE);
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
Wire.begin();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) {};
}
u8g2.setI2CAddress(0x3C * 2); // 8 bit address
u8g2.begin();
u8g2.setFont(u8g2_font_spleen16x32_mf);
u8g2.setDrawColor(1);
u8g2.firstPage();
do {
u8g2.drawStr(7, 25, "Arduino");
u8g2.drawStr(25, 55, "Clock");
} while ( u8g2.nextPage() );
delay(2000);
u8g2.clear();
}
void loop() {
char timeBuffer[16];
char dateBuffer[16];
if (millis() - prevTime >= ONE_SEC) {
prevTime = millis();
DateTime now = rtc.now();
snprintf(timeBuffer, 16, "%2d:%02d:%02d", now.hour(), now.minute(), now.second());
snprintf(dateBuffer, 16, "%2d/%2d/%4d", now.month(), now.day(), now.year());
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_spleen16x32_mf);
u8g2.drawStr(0, 20, timeBuffer);
u8g2.setFont(u8g2_font_profont11_tr);
u8g2.drawStr(45, 40, DOW[now.dayOfTheWeek()]);
u8g2.drawStr(35, 60, dateBuffer);
} while ( u8g2.nextPage() );
Serial.println(timeBuffer);
Serial.println(DOW[now.dayOfTheWeek()]);
Serial.println(dateBuffer);
Serial.println();
}
}