aboutsummaryrefslogtreecommitdiff
path: root/main.ino
blob: 4eb35ccb76361b9ad5e95f69f3a729ac123d4f2f (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <Arduino.h>
#include <Wire.h>
 
#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 < 0return;
 
  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);
}