@@ -47,48 +47,54 @@ int parsePM10(unsigned char *thebuf) {
47
47
return PM10Val;
48
48
}
49
49
50
- PlantowerData readPlantower () {
51
- PlantowerData data;
52
-
53
- if (pmsSerial.find (0x42 )) { // start to read when detect 0x42
54
- Serial.println (" has 0x42" );
55
50
56
- pmsSerial.readBytes (buf,LENG);
57
-
58
- if (buf[0 ] == 0x4d ){
59
- Serial.println (" has 0x4d" );
60
- if (checkValue (buf,LENG)){
61
- Serial.println (" value checked" );
62
- PM01Value = parsePM01 (buf); // count PM1.0 value of the air detector module
63
- PM2_5Value = parsePM2_5 (buf);// count PM2.5 value of the air detector module
64
- PM10Value = parsePM10 (buf); // count PM10 value of the air detector module
51
+ PlantowerData readPlantower (unsigned long ms) {
52
+ PlantowerData data;
65
53
66
- data.ready = 1 ;
67
- data.pm1 = PM01Value;
68
- data.pm10 = PM10Value;
69
- data.pm25 = PM2_5Value;
54
+ unsigned long start = millis ();
55
+ wdt_disable ();
56
+
57
+ do {
58
+ Serial.print (" Timestamp: " );
59
+ Serial.println (millis () - start);
60
+ // while(pmsSerial.available()) {
61
+ if (pmsSerial.find (0x42 )) { // start to read when detect 0x42
62
+ Serial.println (" has 0x42" );
63
+
64
+ pmsSerial.readBytes (buf,LENG);
65
+
66
+ if (buf[0 ] == 0x4d ){
67
+ Serial.println (" has 0x4d" );
68
+ if (checkValue (buf,LENG)){
69
+ Serial.println (" value checked" );
70
+ PM01Value = parsePM01 (buf); // count PM1.0 value of the air detector module
71
+ PM2_5Value = parsePM2_5 (buf);// count PM2.5 value of the air detector module
72
+ PM10Value = parsePM10 (buf); // count PM10 value of the air detector module
73
+
74
+ data.ready = 1 ;
75
+ data.pm1 = PM01Value;
76
+ data.pm10 = PM10Value;
77
+ data.pm25 = PM2_5Value;
78
+ }
79
+ }
70
80
}
71
- }
72
- }
73
-
74
- static unsigned long OledTimer = millis ();
81
+ // }
82
+ } while (millis () - start < ms);
75
83
76
- if (millis () - OledTimer >= 5000 ) {
77
- OledTimer = millis ();
84
+ wdt_enable (1000 );
78
85
79
- Serial.print (" PM1.0: " );
80
- Serial.print (PM01Value);
81
- Serial.println (" ug/m3" );
86
+ Serial.print (" PM1.0: " );
87
+ Serial.print (PM01Value);
88
+ Serial.println (" ug/m3" );
82
89
83
- Serial.print (" PM2.5: " );
84
- Serial.print (PM2_5Value);
85
- Serial.println (" ug/m3" );
90
+ Serial.print (" PM2.5: " );
91
+ Serial.print (PM2_5Value);
92
+ Serial.println (" ug/m3" );
86
93
87
- Serial.print (" PM1 0: " );
88
- Serial.print (PM10Value);
89
- Serial.println (" ug/m3" );
90
- Serial.println ();
91
- }
94
+ Serial.print (" PM1 0: " );
95
+ Serial.print (PM10Value);
96
+ Serial.println (" ug/m3" );
97
+ Serial.println ();
92
98
93
99
return data;
94
100
}
@@ -100,6 +106,6 @@ void setupPlantower() {
100
106
}
101
107
102
108
PlantowerData getPlantowerData () {
103
- PlantowerData data = readPlantower ();
109
+ PlantowerData data = readPlantower (1000 );
104
110
return data;
105
111
}
0 commit comments