//libraries
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup(void) {
delay(1000);
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.clearDisplay();
display.display();
//Display write
display.setTextColor(WHITE, BLACK);
}
char Time[] = " : : ";
char Calendar[] = " / /20 ";
byte i, second, minute, hour, day, date, month, year;
//Display day
void display_day() {
switch (day) {
case 1:
draw_text(38, 54, " SUNDAY ", 1);
break;
case 2:
draw_text(38, 54, " MONDAY ", 1);
break;
case 3:
draw_text(38, 54, " TUESDAY ", 1);
break;
case 4:
draw_text(38, 54, "WEDNESDAY", 1);
break;
case 5:
draw_text(38, 54, "THURSDAY ", 1);
break;
case 6:
draw_text(38, 54, " FRIDAY ", 1);
break;
default:
draw_text(38, 54, "SATURDAY ", 1);
}
}
//Display date and time
void DS1307_display() {
second = (second >> 4) * 10 + (second & 0x0F);
minute = (minute >> 4) * 10 + (minute & 0x0F);
hour = (hour >> 4) * 10 + (hour & 0x0F);
date = (date >> 4) * 10 + (date & 0x0F);
month = (month >> 4) * 10 + (month & 0x0F);
year = (year >> 4) * 10 + (year & 0x0F);
Time[7] = second % 10 + 48;
Time[6] = second / 10 + 48;
Time[4] = minute % 10 + 48;
Time[3] = minute / 10 + 48;
Time[1] = hour % 10 + 48;
Time[0] = hour / 10 + 48;
Calendar[9] = year % 10 + 48;
Calendar[8] = year / 10 + 48;
Calendar[4] = date % 10 + 48;
Calendar[3] = date / 10 + 48;
Calendar[1] = month % 10 + 48;
Calendar[0] = month / 10 + 48;
draw_text(32, 5, Calendar, 1);
draw_text(14, 25, Time, 2);
}
//Display texts
void draw_text(byte x_pos, byte y_pos, char *text, byte text_size) {
display.setCursor(x_pos, y_pos);
display.setTextSize(text_size);
display.print(text);
display.display();
}
void loop() {
Wire.beginTransmission(0x68);
Wire.write(0);
Wire.endTransmission(false);
Wire.requestFrom(0x68, 7);
second = Wire.read();
minute = Wire.read();
hour = Wire.read();
day = Wire.read();
date = Wire.read();
month = Wire.read();
year = Wire.read();
Wire.beginTransmission(0x68);
Wire.write(0x11);
Wire.endTransmission(false);
Wire.requestFrom(0x68, 2);
display_day();
DS1307_display();
delay(50);
}