Browse Source

display layout optimization

main
Hendrik Langer 5 years ago
parent
commit
1fb32d8f01
  1. 89
      src/main.cpp

89
src/main.cpp

@ -44,7 +44,7 @@ static const char* TAG = "MAIN";
WiFiMulti wifiMulti; WiFiMulti wifiMulti;
GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=SS*/ TFT_CS, /*DC=*/ TFT_DC, /*RST=*/ TFT_RST, /*BUSY=*/ -1)); // GDEH0213B72 GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=SS*/ TFT_CS, /*DC=*/ TFT_DC, /*RST=*/ TFT_RST, /*BUSY=*/ -1)); // GDEH0213B72
static constexpr uint8_t y_offset = 8; static constexpr uint8_t y_offset = 6;
Adafruit_BME280 bme280; // I2C (also available: hardware SPI Adafruit_BME280 bme280; // I2C (also available: hardware SPI
Adafruit_BME680 bme680; // I2C (also available: hardware SPI Adafruit_BME680 bme680; // I2C (also available: hardware SPI
@ -239,6 +239,8 @@ void receiveMqtt(const char* topic, const char* data) {
sensor->pm10 = atof(data); sensor->pm10 = atof(data);
} else if (strcmp("/pm25", topic_last) == 0) { } else if (strcmp("/pm25", topic_last) == 0) {
sensor->pm25 = atof(data); sensor->pm25 = atof(data);
} else if (strcmp("/lux", topic_last) == 0) {
sensor->lux = atof(data);
} else if (strcmp("/uvi", topic_last) == 0) { } else if (strcmp("/uvi", topic_last) == 0) {
sensor->uvi = atof(data); sensor->uvi = atof(data);
} else if (strcmp("/uva", topic_last) == 0) { } else if (strcmp("/uva", topic_last) == 0) {
@ -280,7 +282,7 @@ void displayValues() {
display.drawLine(0,y_offset+10,display.width(), y_offset+10, GxEPD_BLACK); display.drawLine(0,y_offset+10,display.width(), y_offset+10, GxEPD_BLACK);
// Temp // Temp
display.drawRect(0,y_offset+10,66,50,GxEPD_BLACK); display.drawRect(0,y_offset+10,64,50,GxEPD_BLACK);
display.setFont(NULL); display.setFont(NULL);
display.setCursor(5,y_offset+15); display.setCursor(5,y_offset+15);
display.printf("max: %.1f", sensor_readings.temperature_max); display.printf("max: %.1f", sensor_readings.temperature_max);
@ -293,16 +295,16 @@ void displayValues() {
display.printf("min: %.1f", sensor_readings.temperature_min); display.printf("min: %.1f", sensor_readings.temperature_min);
// Humidity // Humidity
display.drawRect(65,y_offset+10,66,50,GxEPD_BLACK); display.drawRect(63,y_offset+10,58,50,GxEPD_BLACK);
display.setFont(NULL); display.setFont(NULL);
display.setCursor(70,y_offset+15); display.setCursor(68,y_offset+15);
display.print("Humidity"); display.print("Humidity");
display.setFont(&FreeSansBold9pt7b); display.setFont(&FreeSansBold9pt7b);
display.setCursor(70,y_offset+40); display.setCursor(68,y_offset+40);
display.printf("%.1f", sensor_readings.humidity); display.printf("%.1f", sensor_readings.humidity);
display.setFont(NULL); display.setFont(NULL);
display.print(" \%"); display.print(" \%");
display.setCursor(70,y_offset+45); display.setCursor(68,y_offset+45);
if (sensor_readings.humidity < 30) { if (sensor_readings.humidity < 30) {
display.print("low"); display.print("low");
} else if (sensor_readings.humidity < 60) { } else if (sensor_readings.humidity < 60) {
@ -313,17 +315,17 @@ void displayValues() {
// Pressure // Pressure
display.drawRect(130,y_offset+10,66,50,GxEPD_BLACK); display.drawRect(120,y_offset+10,66,50,GxEPD_BLACK);
display.setFont(NULL); display.setFont(NULL);
display.setCursor(135,y_offset+15); display.setCursor(125,y_offset+15);
display.print("Pressure"); display.print("Pressure");
display.setFont(&FreeSansBold9pt7b); display.setFont(&FreeSansBold9pt7b);
display.setCursor(135,y_offset+40); display.setCursor(125,y_offset+40);
display.printf("%.1f", sensor_readings.pressure); display.printf("%.1f", sensor_readings.pressure);
display.setFont(NULL); display.setFont(NULL);
//display.print(" hPa"); //display.print(" hPa");
float pressure_diff = history_pressure.getElement(0) - history_pressure.getFirst(); float pressure_diff = history_pressure.getElement(0) - history_pressure.getFirst();
display.setCursor(135,y_offset+45); display.setCursor(125,y_offset+45);
if (isnan(pressure_diff) || history_pressure.getCount() < history_pressure.getSize()) { if (isnan(pressure_diff) || history_pressure.getCount() < history_pressure.getSize()) {
} else if (pressure_diff > -20 && pressure_diff < -0.6) { } else if (pressure_diff > -20 && pressure_diff < -0.6) {
display.print("Trend: \x19\x19"); display.print("Trend: \x19\x19");
@ -341,12 +343,12 @@ void displayValues() {
// Other // Other
display.drawRect(195,y_offset+10,56,122-10,GxEPD_BLACK); display.drawRect(185,y_offset+10,250-186+1,122-10,GxEPD_BLACK);
display.setFont(NULL); display.setFont(NULL);
// VOC // VOC
display.setCursor(200,y_offset+15); display.setCursor(190,y_offset+15);
display.println("VOC:"); display.println("-- VOC --");
display.setCursor(200,y_offset+25); display.setCursor(190,y_offset+25);
display.printf("%.1f k\xe9", sensor_readings.voc / 1000.0F); display.printf("%.1f k\xe9", sensor_readings.voc / 1000.0F);
// PM // PM
float pm10, pm25; float pm10, pm25;
@ -366,17 +368,29 @@ void displayValues() {
pm10 = NAN; pm10 = NAN;
pm25 = NAN; pm25 = NAN;
} }
display.setCursor(200,y_offset+45); display.setCursor(190,y_offset+37);
display.println("PM10/2.5:"); display.println("-- PM --");
display.setCursor(200,y_offset+55); display.setCursor(190,y_offset+47);
display.printf("%.1f", pm10); display.printf("%.1f", pm10);
display.setCursor(200,y_offset+65); display.setCursor(220,y_offset+47);
display.printf("%.1f", pm25); display.printf("%.1f", pm25);
// Lux // Lux
//display.setCursor(200,y_offset+80); float lux;
//display.println("Lux:"); if (light_active) {
//display.setCursor(200,y_offset+90); lux = sensor_readings.lux;
//display.printf("%.1f", sensor_readings.lux); } else if (!isnan(sensors_a4cf1211c3e4.lux)) {
lux = sensors_a4cf1211c3e4.lux;
} else if (!isnan(sensors_246f28d1fa5c.lux)) {
lux = sensors_246f28d1fa5c.lux;
} else if (!isnan(sensors_246f28d1a080.lux)) {
lux = sensors_246f28d1a080.lux;
} else {
lux = NAN;
}
display.setCursor(190,y_offset+59);
display.println("-- Lux --");
display.setCursor(190,y_offset+69);
display.printf("%.1f lx", lux);
// UV // UV
float uvi, uva, uvb; float uvi, uva, uvb;
if (uv_active) { if (uv_active) {
@ -400,36 +414,15 @@ void displayValues() {
uva = NAN; uva = NAN;
uvb = NAN; uvb = NAN;
} }
display.setCursor(200,y_offset+80); display.setCursor(190,y_offset+80);
display.println("UV I/A/B:"); display.println("UV(I/A/B):");
display.setCursor(200,y_offset+90); display.setCursor(190,y_offset+90);
display.printf("%.1f", uvi); display.printf("%.1f", uvi);
display.setCursor(200,y_offset+100); display.setCursor(190,y_offset+100);
display.printf("%.1f", uva); display.printf("%.1f", uva);
display.setCursor(200,y_offset+110); display.setCursor(190,y_offset+110);
display.printf("%.1f", uvb); display.printf("%.1f", uvb);
float lux;
if (light_active) {
lux = sensor_readings.lux;
} else if (!isnan(sensors_a4cf1211c3e4.lux)) {
lux = sensors_a4cf1211c3e4.lux;
} else if (!isnan(sensors_246f28d1fa5c.lux)) {
lux = sensors_246f28d1fa5c.lux;
} else if (!isnan(sensors_246f28d1a080.lux)) {
lux = sensors_246f28d1a080.lux;
} else {
lux = NAN;
}
display.setCursor(200,y_offset+120);
display.println("LUX");
display.setCursor(200,y_offset+130);
display.printf("%.1f", lux);
// other nodes // other nodes
display.setFont(NULL); display.setFont(NULL);
display.setCursor(0, y_offset+70); display.setCursor(0, y_offset+70);

Loading…
Cancel
Save