aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2022-03-27 13:58:31 +0100
committerdakkar <dakkar@thenautilus.net>2022-03-27 13:58:36 +0100
commitb6ef726d8a84156bfe5d3ea792c94f142f2e0385 (patch)
tree951fc4b27536a348b34029fe11258e2d55283bf1
parentfix pm low power reading (diff)
downloadenv-sensor-b6ef726d8a84156bfe5d3ea792c94f142f2e0385.tar.gz
env-sensor-b6ef726d8a84156bfe5d3ea792c94f142f2e0385.tar.bz2
env-sensor-b6ef726d8a84156bfe5d3ea792c94f142f2e0385.zip
show uptime
-rw-r--r--display.h39
1 files changed, 38 insertions, 1 deletions
diff --git a/display.h b/display.h
index 5c9a4a9..a07c86d 100644
--- a/display.h
+++ b/display.h
@@ -11,15 +11,48 @@
#include "data.h"
+class TimeStr {
+private:
+ char str[10];
+
+ unsigned long cut(unsigned long &val, unsigned long max) {
+ unsigned long ret = val/max;
+ val %= max;
+ return ret;
+ }
+public:
+ TimeStr() :str("000:00:00") {}
+
+ const char *format(unsigned long now_millis) {
+ unsigned long now_s = now_millis/1000;
+ unsigned long now_m = cut(now_s,60);
+ unsigned long now_h = cut(now_m,60);
+
+ str[0]='0' + cut(now_h,100);
+ str[1]='0' + cut(now_h,10);
+ str[2]='0' + now_h;
+
+ str[4]='0' + cut(now_m,10);
+ str[5]='0' + now_m;
+
+ str[7]='0' + cut(now_s,10);
+ str[8]='0' + now_s;
+
+ return &str[0];
+ }
+};
+
class Display {
private:
GxIO_Class io;
GxEPD_Class display;
+ TimeStr timeStr;
public:
Display() :
io(SPI, EPD_CS, EPD_DC, EPD_RSET),
- display(io, EPD_RSET, EPD_BUSY)
+ display(io, EPD_RSET, EPD_BUSY),
+ timeStr()
{}
void start() {
@@ -59,6 +92,10 @@ public:
display.setCursor(120,30);
display.print("Batt "); display.print(data->batteryVoltage);
+ display.setCursor(0,120);
+ display.print("Uptime ");
+ display.print(timeStr.format(millis()));
+
// "partial" update
display.updateWindow(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, false);