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 */
|
/** Show boot display */
|
||||||
Serial.println("Firmware Version: " + ag.getVersion());
|
Serial.println("Firmware Version: " + ag.getVersion());
|
||||||
displayShowText("AirGradient ONE", "FW Version: ", ag.getVersion());
|
displayShowText("AirGradient ONE", "FW Version: ", ag.getVersion());
|
||||||
|
|
||||||
boardInit();
|
boardInit();
|
||||||
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
|
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("Temperature in C: %0.2f\r\n", temp);
|
||||||
Serial.printf("Relative Humidity: %d\r\n", hum);
|
Serial.printf("Relative Humidity: %d\r\n", hum);
|
||||||
|
|
||||||
|
// Update compensation temperature and humidity for SGP41
|
||||||
|
if (hasSensorSGP) {
|
||||||
|
ag.sgp41.setCompensationTemperatureHumidity(temp, hum);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Serial.println("SHT read failed");
|
Serial.println("SHT read failed");
|
||||||
}
|
}
|
||||||
|
@ -1204,6 +1204,25 @@ static void pmUpdate(void) {
|
|||||||
pm2hum = 0;
|
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) {
|
static void co2Update(void) {
|
||||||
|
@ -253,7 +253,20 @@ int Sgp41::getTvocRaw(void) { return tvocRaw; }
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get NOX raw value
|
* @brief Get NOX raw value
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
int Sgp41::getNoxRaw(void) { return noxRaw; }
|
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 getNoxIndex(void);
|
||||||
int getTvocRaw(void);
|
int getTvocRaw(void);
|
||||||
int getNoxRaw(void);
|
int getNoxRaw(void);
|
||||||
|
void setCompensationTemperatureHumidity(float temp, float hum);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool onConditioning = true;
|
bool onConditioning = true;
|
||||||
|
Reference in New Issue
Block a user