mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-07-21 20:52:08 +02:00
add compensation temperature and humidity for SGP41
This commit is contained in:
@ -744,7 +744,7 @@ void setup() {
|
||||
/** Show boot display */
|
||||
Serial.println("Firmware Version: " + ag.getVersion());
|
||||
displayShowText("AirGradient ONE", "FW Version: ", ag.getVersion());
|
||||
|
||||
|
||||
boardInit();
|
||||
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
|
||||
|
||||
@ -2288,6 +2288,11 @@ static void tempHumUpdate(void) {
|
||||
|
||||
Serial.printf("Temperature in C: %0.2f\r\n", temp);
|
||||
Serial.printf("Relative Humidity: %d\r\n", hum);
|
||||
|
||||
// Update compensation temperature and humidity for SGP41
|
||||
if (hasSensorSGP) {
|
||||
ag.sgp41.setCompensationTemperatureHumidity(temp, hum);
|
||||
}
|
||||
} else {
|
||||
Serial.println("SHT read failed");
|
||||
}
|
||||
|
@ -1204,6 +1204,25 @@ static void pmUpdate(void) {
|
||||
pm2hum = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (hasSensorSGP) {
|
||||
float temp;
|
||||
float hum;
|
||||
if (pmsResult_1 && pmsResult_2) {
|
||||
temp = (temp_1 + temp_2) / 2.0f;
|
||||
hum = (hum_1 + hum_2) / 2.0f;
|
||||
} else {
|
||||
if (pmsResult_1) {
|
||||
temp = temp_1;
|
||||
hum = hum_1;
|
||||
}
|
||||
if (pmsResult_2) {
|
||||
temp = temp_2;
|
||||
hum = hum_2;
|
||||
}
|
||||
}
|
||||
ag.sgp41.setCompensationTemperatureHumidity(temp, hum);
|
||||
}
|
||||
}
|
||||
|
||||
static void co2Update(void) {
|
||||
|
@ -253,7 +253,20 @@ int Sgp41::getTvocRaw(void) { return tvocRaw; }
|
||||
|
||||
/**
|
||||
* @brief Get NOX raw value
|
||||
*
|
||||
* @return int
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
int Sgp41::getNoxRaw(void) { return noxRaw; }
|
||||
|
||||
/**
|
||||
* @brief Set compasation temperature and humidity to calculate TVOC and NOx
|
||||
* index
|
||||
*
|
||||
* @param temp Temperature
|
||||
* @param hum Humidity
|
||||
*/
|
||||
void Sgp41::setCompensationTemperatureHumidity(float temp, float hum) {
|
||||
defaultT = static_cast<uint16_t>((temp + 45) * 65535 / 175);
|
||||
defaultRh = static_cast<uint16_t>(hum * 65535 / 100);
|
||||
AgLog("Update: defaultT: %d, defaultRh: %d", defaultT, defaultRh);
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ public:
|
||||
int getNoxIndex(void);
|
||||
int getTvocRaw(void);
|
||||
int getNoxRaw(void);
|
||||
void setCompensationTemperatureHumidity(float temp, float hum);
|
||||
|
||||
private:
|
||||
bool onConditioning = true;
|
||||
|
Reference in New Issue
Block a user