aboutsummaryrefslogtreecommitdiff
path: root/display.h
blob: fdab3f318573f34c1e1baecbbd9bb172b2779f6e (plain)
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
#pragma once
 
#define LILYGO_T5_V213 // needed for the display libraries 
 
#include <boards.h>
#include <GxEPD.h>
#include <GxGDEH0213B73/GxGDEH0213B73.h>  // screen model, probably correct 
#include <Fonts/FreeMonoBold9pt7b.h>
#include <GxIO/GxIO_SPI/GxIO_SPI.h>
#include <GxIO/GxIO.h>
 
#include "data.h"
 
class Display {
private:
  GxIO_Class io;
  GxEPD_Class display;
 
public:
  Display() :
    io(SPI, EPD_CS, EPD_DC, EPD_RSET),
    display(io, EPD_RSET, EPD_BUSY)
  {}
 
  void start() {
    SPI.begin(EPD_SCLK, EPD_MISO, EPD_MOSI);
 
    display.init();
    display.setTextColor(GxEPD_BLACK);
    display.setRotation(3);
    display.setFont(&FreeMonoBold9pt7b);
  }
 
  void show(const SensorData *data) {
    display.fillScreen(GxEPD_WHITE);
 
    display.setCursor(0,20);
    display.print("Co2 ");
    display.print(data->co2);
 
    display.setCursor(100,20);
    display.print("t");
    display.print(data->temperature,1);
 
    display.setCursor(150,20);
    display.print(" h");
    display.print(data->humidity,0);
    display.print("%");
 
    display.setCursor(0,45);
    display.println("   PM");
    display.print(" 1.0 "); display.println(data->pm.mc_1p0,1);
    display.print(" 2.5 "); display.println(data->pm.mc_2p5,1);
    display.print(" 4.0 "); display.println(data->pm.mc_4p0,1);
    display.print("10.0 "); display.println(data->pm.mc_10p0,1);
 
    display.setCursor(100,45);
    display.print("Batt "); display.print(data->batteryVoltage);
 
    // "partial" update 
    display.updateWindow(00, GxEPD_WIDTH, GxEPD_HEIGHT, false);
  }
};