#pragma once #define LILYGO_T5_V213 // needed for the display libraries #include #include #include // screen model, probably correct #include #include #include #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(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, false); } };