#include #include #include "data.h" #include "battery.h" #include "display.h" #include "datalog.h" #include "co2.h" #include "pm.h" Battery battery; PM pm; CO2 co2; SensorData data; Display display; DataLog datalog; void handleCommand(const String &line) { int firstSpace = line.indexOf(' '); if (firstSpace < 0) return; String tag = line.substring(0,firstSpace); String command = line.substring(firstSpace+1); tag.trim();command.trim(); Serial.print("# <");Serial.print(tag); Serial.print("|");Serial.print(command); Serial.println(">"); if (battery.serialCommand(tag,command)) return; if (pm.serialCommand(tag,command)) return; if (co2.serialCommand(tag,command)) return; if (display.serialCommand(tag,command)) return; if (datalog.serialCommand(tag,command)) return; } void setup() { Serial.begin(115200); while (!Serial) { delay(100); } // the board's definition says SCL=23, but I have SCL=22 Wire.begin(21,22); display.start(); display.show(&data); datalog.start(); battery.start(); co2.start(); pm.start(); Serial.println("# Waiting for first measurement... (5 sec)"); delay(5000); } void loop() { bool changed; if (battery.dataReady()) { changed=true; battery.read(&data); } if (pm.dataReady()) { changed = true; pm.read(&data); } if (co2.dataReady()) { changed = true; co2.read(&data); } if (changed) { display.show(&data); datalog.show(&data); } if (Serial.available()) { Serial.println("# reading"); String line = Serial.readStringUntil('\n'); Serial.print("# ");Serial.println(line); handleCommand(line); } delay(5000); }