#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// OLED FeatherWing buttons map to different pins depending on board.
// The I2C (Wire) bus may also be different.
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
#define C_X 63
#define C_Y 31
float a=45;
float theta_r,x,y;
float x1,y11,x2,y2,t;
int i;
int h=0,m=0;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3c); // Address 0x3C for 128x32
display.display();
delay(1000);
display.clearDisplay();
display.drawCircle(C_X,C_Y,31,SSD1306_WHITE);
for (i=0;i<360;i+=5){
t=90-i*6;
theta_r=t*(PI/180.0);
x1=C_X+23*cos(theta_r);
y11=C_Y-23*sin(theta_r);
x2=C_X+27*cos(theta_r);
y2=C_Y-27*sin(theta_r);
display.drawLine(x1,y11,x2,y2,SSD1306_WHITE);
}
display.display();
}
void loop(){
//display.clearDisplay();
display.drawCircle(C_X,C_Y,31,SSD1306_WHITE);
for (i=0;i<360;i+=5){
t=90-i*6;
theta_r=t*(PI/180.0);
x1=C_X+23*cos(theta_r);
y11=C_Y-23*sin(theta_r);
x2=C_X+27*cos(theta_r);
y2=C_Y-27*sin(theta_r);
display.drawLine(x1,y11,x2,y2,SSD1306_WHITE);
}
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,30);
display.print(h);
display.print(":");
display.print(m);
//t=(15-h)*30+(15-h)*m/60.0;
t=90-h*30-m*6/12.0;
//draw_hours
//算出度數
theta_r=t*(PI/180.0);
x=C_X+15*cos(theta_r);
y=C_Y-15*sin(theta_r);
display.drawLine(C_X,C_Y,x,y,SSD1306_WHITE);
t=90-m*6;
theta_r=t*(PI/180.0);
x=C_X+25*cos(theta_r);
y=C_Y-25*sin(theta_r);
display.drawLine(C_X,C_Y,x,y,SSD1306_WHITE);
display.display();
if (m<59){
m++;
}else{
m=0;
if (h<12)
h++;
else
h=0;
}
display.clearDisplay();
}