Skip to content

Commit c6e414a

Browse files
committed
updated bme sensors management to allows Sensor's calibration
1 parent d6e81ef commit c6e414a

File tree

5 files changed

+49
-15
lines changed

5 files changed

+49
-15
lines changed

examples/Sensors/VOC/AirQuality/AirQuality.ino

-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,4 @@ void loop() {
2828

2929
Serial.print("Air Quality Index = ");
3030
Serial.println(airQualityIndex);
31-
32-
// wait 1 second to print again
33-
delay(1000);
3431
}

examples/Sensors/VOC/CO2_Read/CO2_Read.ino

-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,4 @@ void loop() {
2020
// print each of the sensor values
2121
Serial.print("CO2 Value = ");
2222
Serial.println(co2);
23-
24-
// wait 1 second to print again
25-
delay(1000);
2623
}

examples/Sensors/VOC/VolatileOrganicCompounds/VolatileOrganicCompounds.ino

-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,4 @@ void loop() {
2525
Serial.print("Volatile Organic Compounds (VOC) = ");
2626
Serial.print(volatileOrganicCompounds);
2727
Serial.println(" ppm");
28-
29-
// wait 1 second to print again
30-
delay(1000);
3128
}

src/AirQualityClass.cpp

+48-6
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,14 @@ void AirQualityClass::end()
9393
float AirQualityClass::readVOC()
9494
{
9595
if (_revision == BOARD_REVISION_2) {
96-
while(!iaqSensor->run()){ }
96+
unsigned int time_Start = millis();
97+
while(millis() - time_Start < BME68X_TIMEOUT) {
98+
if(iaqSensor->run()){
99+
break;
100+
} else {
101+
checkIaqSensorStatus();
102+
}
103+
}
97104
float reading = iaqSensor->breathVocEquivalent;
98105
return reading;
99106
}
@@ -102,7 +109,14 @@ float AirQualityClass::readVOC()
102109
float AirQualityClass::readGasResistor()
103110
{
104111
if (_revision == BOARD_REVISION_2) {
105-
while(!iaqSensor->run()){ }
112+
unsigned int time_Start = millis();
113+
while(millis() - time_Start < BME68X_TIMEOUT) {
114+
if(iaqSensor->run()){
115+
break;
116+
} else {
117+
checkIaqSensorStatus();
118+
}
119+
}
106120
float reading = iaqSensor->gasResistance;
107121
return reading;
108122
}
@@ -111,7 +125,14 @@ float AirQualityClass::readGasResistor()
111125
float AirQualityClass::readIAQ()
112126
{
113127
if (_revision == BOARD_REVISION_2) {
114-
while(!iaqSensor->run()){ }
128+
unsigned int time_Start = millis();
129+
while(millis() - time_Start < BME68X_TIMEOUT) {
130+
if(iaqSensor->run()){
131+
break;
132+
} else {
133+
checkIaqSensorStatus();
134+
}
135+
}
115136
float reading = iaqSensor->iaq;
116137
return reading;
117138
}
@@ -120,7 +141,14 @@ float AirQualityClass::readIAQ()
120141
float AirQualityClass::readIAQAccuracy()
121142
{
122143
if (_revision == BOARD_REVISION_2) {
123-
while(!iaqSensor->run()){ }
144+
unsigned int time_Start = millis();
145+
while(millis() - time_Start < BME68X_TIMEOUT) {
146+
if(iaqSensor->run()){
147+
break;
148+
} else {
149+
checkIaqSensorStatus();
150+
}
151+
}
124152
float reading = iaqSensor->iaqAccuracy;
125153
return reading;
126154
}
@@ -129,7 +157,14 @@ float AirQualityClass::readIAQAccuracy()
129157
float AirQualityClass::readStaticIAQ()
130158
{
131159
if (_revision == BOARD_REVISION_2) {
132-
while(!iaqSensor->run()){ }
160+
unsigned int time_Start = millis();
161+
while(millis() - time_Start < BME68X_TIMEOUT) {
162+
if(iaqSensor->run()){
163+
break;
164+
} else {
165+
checkIaqSensorStatus();
166+
}
167+
}
133168
float reading = iaqSensor->staticIaq;
134169
return reading;
135170
}
@@ -139,7 +174,14 @@ float AirQualityClass::readStaticIAQ()
139174
float AirQualityClass::readCO2()
140175
{
141176
if (_revision == BOARD_REVISION_2) {
142-
while(!iaqSensor->run()){ }
177+
unsigned int time_Start = millis();
178+
while(millis() - time_Start < BME68X_TIMEOUT) {
179+
if(iaqSensor->run()){
180+
break;
181+
} else {
182+
checkIaqSensorStatus();
183+
}
184+
}
143185
float reading = iaqSensor->co2Equivalent;
144186
return reading;
145187
}

src/MKRIoTCarrierDefines.h

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
2525
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
2626

27+
#define BME68X_TIMEOUT 10000
2728

2829
/* Type for getRevision functions */
2930
using getRev_t = int (*)();

0 commit comments

Comments
 (0)