-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcircle.cpp
More file actions
126 lines (100 loc) · 4.34 KB
/
circle.cpp
File metadata and controls
126 lines (100 loc) · 4.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "Watchy_circle.h"
#define DARKMODE false
const uint8_t* tagx[] = { xsun, xmon, xtue, xwed, xthu, xfri, xsat, xsun };
const uint8_t* monx[] = { xjan, xfeb, xmar, xapr, xmay, xjun, xjul, xaug, xsep, xoct, xnov, xdec };
void Watchycircle::drawWatchFace(){
//time adjustment start
//if you don't need a time adjustment, just delete all lines between time adjustment start and end
//my watchy runs too fast (15 seconds and 500 ms a day), this code set back time each day by 15 seconds and 500 ms
if (currentTime.Hour == 00 && currentTime.Minute == 30){
RTC.read(currentTime);
int8_t sekunde = currentTime.Second;
int8_t minute = currentTime.Minute;
int8_t hour = currentTime.Hour;
int8_t day = currentTime.Day;
int8_t month = currentTime.Month;
int8_t year = tmYearToY2k(currentTime.Year);
delay(15500);
tmElements_t tm;
tm.Month = month;
tm.Day = day;
tm.Year = y2kYearToTm(year);
tm.Hour = hour;
tm.Minute = minute ;
tm.Second = sekunde;
RTC.set(tm);
}
// time adjustment end
display.fillScreen(DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.setTextColor(DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
int WTag, n;
int16_t x, y, xc, yc;
uint16_t wc, hc;
float radi = 0.0174532925;
float m = currentTime.Minute;
float h = currentTime.Hour;
float mx = m*6;
float mp = (m + 5) * 6;
float hx = (h + (m / 60))*30;
float hp = (h + ((m + 30) / 60)) * 30;
display.drawCircle(100, 100, 99, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
display.drawCircle(100, 100, 73, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
display.setFont(&FreeSansBold9pt7b);
// reset step counter at midnight
if (currentTime.Hour == 00 && currentTime.Minute == 00){
sensor.resetStepCounter();
//turn off radios
WiFi.mode(WIFI_OFF);
btStop();
}
for ( n = 1; n <= 12; n++) {
x = 100 + 86 * sin((n * 30.0 - hx) * radi);
y = 112 - 86 * cos((n * 30.0 - hx) * radi);
display.getTextBounds(String(n), 100, 100, &xc, &yc, &wc, &hc);
display.setCursor(x - wc / 2, y - hc / 2);
display.println(n);
x = 100 + 86 * sin((n * 30.0 - hp) * radi);
y = 100 - 86 * cos((n * 30.0 - hp) * radi);
display.drawCircle(x, y, 2, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
}
display.drawCircle(100, 100, 46, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
for (int n = 0; n < 60; n = n + 10) {
x = 100 + 58 * sin((n * 6 - mx) * radi);
y = 112 - 58 * cos((n * 6 - mx) * radi);
display.getTextBounds(String(n), 100, 100, &xc, &yc, &wc, &hc);
display.setCursor(x - wc / 2, y - hc / 2);
display.println(n);
x = 100 + 58 * sin((n * 30 - mp) * radi);
y = 100 - 58 * cos((n * 30 - mp) * radi);
display.drawCircle(x, y, 2, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
}
display.writeFastVLine(100, 1, 54, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
display.setTextColor(DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
display.setCursor(5, 15);
WTag = currentTime.Day;
WTag = WTag / 10;
display.println(WTag);
WTag = currentTime.Day - (WTag * 10);
display.setCursor(185, 15);
display.println(WTag);
display.getTextBounds(String("Bat"), 100, 105, &xc, &yc, &wc, &hc);
display.setCursor(100 - wc / 2, 85 - hc / 2);
display.println("Bat");
float VBAT = getBatteryVoltage();
int batLev = min<int>(100 - ((4.15 - VBAT) * 100), 100);
batLev = max<int>(batLev, 0);
display.getTextBounds(String(batLev), 100, 100, &xc, &yc, &wc, &hc);
display.setCursor(100 - wc / 2, 100 - hc / 2);
display.println(batLev);
batLev = sensor.getCounter();
display.getTextBounds(String("Steps"), 100, 100, &xc, &yc, &wc, &hc);
display.setCursor(100 - wc / 2, 120 - hc / 2);
display.println("Steps");
display.getTextBounds(String(batLev), 100, 100, &xc, &yc, &wc, &hc);
display.setCursor(100 - wc / 2, 135 - hc / 2);
display.println(batLev);
WTag = currentTime.Wday - 1;
display.drawBitmap(0, 156, tagx[WTag], 45, 45, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
WTag = currentTime.Month - 1;
display.drawBitmap(155, 156, monx[WTag], 45, 45, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
}