#include "RTClib.h"
#include <U8g2lib.h>
#include <Wire.h>
// oled display
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
RTC_DS1307 rtc;
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(128, 64, &Wire, -1);
int ShiftYH;
int ShiftXH;
int hour;
int ShiftYM;
int ShiftXM;
int minute;
void setup() {
Serial.begin(9600);
rtc.begin();
display.setTextSize(1);
display.setTextColor(WHITE);
display.begin(SSD1306_SWITCHCAPVCC, 0x3c);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void loop() {
DateTime now = rtc.now();
display.clearDisplay();
display.setCursor(0,0);
display.print(now.hour());
display.print(":");
if(now.minute() < 10){
display.print("0");
display.print(now.minute());
}
else{
display.print(now.minute());
}
display.setCursor(70,5);
display.print("12");
display.setCursor(98,29);
display.print("3");
display.setCursor(74,54);
display.print("6");
display.setCursor(49,29);
display.print("9");
if(now.hour() > 12){
hour = now.hour() -12;
}
else{
hour = now.hour();
}
minute = now.minute();
float hrAngle = (hour*0.5236) - 1.5708;
float minAngle = (minute*0.10472) - 1.5708;
ShiftYH = 8*(sin(hrAngle)) + 32;
ShiftXH = 8*(cos(hrAngle)) + 75;
ShiftYM = 17*(sin(minAngle)) + 32;
ShiftXM = 17*(cos(minAngle)) + 75;
display.drawCircle(75, 32, 31, WHITE);
display.drawLine(75, 32, ShiftXH, ShiftYH, WHITE);
display.drawLine(75, 32, ShiftXM, ShiftYM, WHITE);
display.display();
}