|
|
|
|
@ -28,6 +28,7 @@ void blink_setup();
|
|
|
|
|
void blink(int length);
|
|
|
|
|
int read_analog();
|
|
|
|
|
void led_set(int ledPin, bool state);
|
|
|
|
|
uint32_t getAbsoluteHumidity(float temperature, float humidity);
|
|
|
|
|
|
|
|
|
|
int first_time = true;
|
|
|
|
|
int first_read = true;
|
|
|
|
|
@ -423,3 +424,10 @@ int read_analog()
|
|
|
|
|
#endif
|
|
|
|
|
return(sensorValue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t getAbsoluteHumidity(float temperature, float humidity) {
|
|
|
|
|
// approximation formula from Sensirion SGP30 Driver Integration chapter 3.15
|
|
|
|
|
const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f * exp((17.62f * temperature) / (243.12f + temperature)) / (273.15f + temperature)); // [g/m^3]
|
|
|
|
|
const uint32_t absoluteHumidityScaled = static_cast<uint32_t>(1000.0f * absoluteHumidity); // [mg/m^3]
|
|
|
|
|
return absoluteHumidityScaled;
|
|
|
|
|
}
|
|
|
|
|
|