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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <XPT2046_Touchscreen.h>
#include "DHT.h"
#include "cpu.h"
#include "datetimeHandler.h"
#include "gfx_1.h"
#define TFT_DC D4
#define TFT_CS D2
#define TFT_RESET D3
#define DHTPIN D8
#define DHTTYPE DHT22
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
DHT dht(DHTPIN, DHTTYPE);
static uint32_t tempTime = 0;
static uint32_t rtcTime = 0;
static uint32_t displayTime = 0;
void setup() {
Serial.begin(9600);
initHardware();
gfx1_layout();
}
void update(String command) {
if (!isnan(dht.readTemperature())) {
localHum = dht.readHumidity();
localTemp = dht.readTemperature() - 4;
}
String keys[] = { "CpuTemp", "CpuUsage", "RamMax", "RamFree", "Time", "OS", "Kernel", "Uptime" };
String values[] = { "", "", "", "", "", "", "", "" };
for (int i = 0; i < std::size(keys); i++) {
int index = command.indexOf(keys[i]);
if (index != -1) {
String value = command.substring(index + keys[i].length() + 1, command.indexOf(",", index + keys[i].length() + 1));
values[i] = value;
}
}
for (int i = 0; i < std::size(values); i++) {
Serial.print(keys[i]);
Serial.print(" = ");
Serial.println(values[i]);
switch (i) {
case 0:
if (values[i] != "")
setCpuTemp(values[i]);
break;
case 1:
if (values[i] != "")
setCpuUsage(values[i]);
break;
case 2:
if (values[i] != "")
setRamMax(values[i]);
break;
case 3:
if (values[i] != "")
setRamFree(values[i]);
break;
case 4:
if (values[i] != "")
setTime(values[i]);
break;
case 5:
if (values[i] != "")
OS = values[i];
break;
case 6:
if (values[i] != "")
KernelVer = values[i];
break;
case 7:
if (values[i] != "")
Uptime = values[i];
break;
}
}
gfx1_udpate();
}
void loop() {
String command = Serial.readString();
command.trim();
update(command);
}
void initHardware() {
pinMode(TFT_RESET, OUTPUT);
digitalWrite(TFT_RESET, LOW);
delay(1000);
digitalWrite(TFT_RESET, HIGH);
delay(1000);
tft.begin();
tft.setRotation(3);
dht.begin();
}
|