aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2022-02-12 16:40:17 +0000
committerdakkar <dakkar@thenautilus.net>2022-02-12 16:40:17 +0000
commit762e9ce5c5d174c972d2171b5e96ebd1cad6507e (patch)
treed128674f350ef1d00c5fffe0eb92f493f4f14da8
parentuse SPS30 as well (diff)
downloadenv-sensor-762e9ce5c5d174c972d2171b5e96ebd1cad6507e.tar.gz
env-sensor-762e9ce5c5d174c972d2171b5e96ebd1cad6507e.tar.bz2
env-sensor-762e9ce5c5d174c972d2171b5e96ebd1cad6507e.zip
some sort of partial updates
it's much faster, but the image is less "crisp"
-rw-r--r--main.ino88
1 files changed, 36 insertions, 52 deletions
diff --git a/main.ino b/main.ino
index cb5d21a..bde8892 100644
--- a/main.ino
+++ b/main.ino
@@ -12,26 +12,40 @@
#include <GxIO/GxIO_SPI/GxIO_SPI.h>
#include <GxIO/GxIO.h>
-GxIO_Class io(SPI, EPD_CS, EPD_DC, EPD_RSET);
+GxIO_Class io(SPI, EPD_CS, EPD_DC, EPD_RSET);
GxEPD_Class display(io, EPD_RSET, EPD_BUSY);
-SPIClass SDSPI(VSPI); // for sdcard? maybe?
-
+SPIClass SDSPI(VSPI); // for sdcard
SensirionI2CScd4x scd4x;
-void printUint16Hex(uint16_t value) {
- Serial.print(value < 4096 ? "0" : "");
- Serial.print(value < 256 ? "0" : "");
- Serial.print(value < 16 ? "0" : "");
- Serial.print(value, HEX);
-}
-
-void printSerialNumber(uint16_t serial0, uint16_t serial1, uint16_t serial2) {
- Serial.print("Serial: 0x");
- printUint16Hex(serial0);
- printUint16Hex(serial1);
- printUint16Hex(serial2);
- Serial.println();
+uint16_t co2 = 0;
+float temperature = 0.0f;
+float humidity = 0.0f;
+struct sps30_measurement m;
+
+void showThings(bool all=false) {
+ display.fillScreen(GxEPD_WHITE);
+ display.setCursor(0,20);
+
+ display.print("Co2:");
+ display.println(co2);
+ display.print("T:");
+ display.print(temperature);
+ display.print(" H:");
+ display.println(humidity);
+
+ display.print("PM 1:");
+ display.print(m.mc_1p0);
+ display.print(" PM 2.5:");
+ display.println(m.mc_2p5);
+
+ display.print("PM 4:");
+ display.print(m.mc_4p0);
+ display.print(" PM 10:");
+ display.println(m.mc_10p0);
+
+ // "partial" update
+ display.updateWindow(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, false);
}
void setup() {
@@ -50,8 +64,8 @@ void setup() {
display.setTextColor(GxEPD_BLACK);
display.setRotation(3);
display.setFont(&FreeMonoBold9pt7b);
- display.fillScreen(GxEPD_WHITE);
- display.update();
+
+ showThings();
uint16_t error;
char errorMessage[256];
@@ -66,18 +80,13 @@ void setup() {
Serial.println(errorMessage);
}
- uint16_t serial0;
- uint16_t serial1;
- uint16_t serial2;
- error = scd4x.getSerialNumber(serial0, serial1, serial2);
+ error = scd4x.setAutomaticSelfCalibration(1);
if (error) {
- Serial.print("Error trying to execute getSerialNumber(): ");
+ Serial.print("Error trying to execute setAutomaticSelfCalibration(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
- } else {
- printSerialNumber(serial0, serial1, serial2);
}
-
+
// Start Measurement
error = scd4x.startPeriodicMeasurement();
if (error) {
@@ -118,13 +127,8 @@ void loop() {
delay(5000);
- // Read Measurement
- uint16_t co2 = 0;
- float temperature = 0.0f;
- float humidity = 0.0f;
error = scd4x.readMeasurement(co2, temperature, humidity);
- struct sps30_measurement m;
char serial[SPS30_MAX_SERIAL_LEN];
uint16_t data_ready;
int16_t ret;
@@ -147,25 +151,5 @@ void loop() {
return;
}
- display.fillScreen(GxEPD_WHITE);
- display.setCursor(0,20);
-
- display.print("Co2:");
- display.println(co2);
- display.print("T:");
- display.print(temperature);
- display.print(" H:");
- display.println(humidity);
-
- display.print("PM 1:");
- display.print(m.mc_1p0);
- display.print(" PM 2.5:");
- display.println(m.mc_2p5);
-
- display.print("PM 4:");
- display.print(m.mc_4p0);
- display.print(" PM 10:");
- display.println(m.mc_10p0);
-
- display.update();
+ showThings();
}