@Roger
For me it is OK to have arduino related libraries here, imho the gallery is more for final projects.
@teoqba
looks well done, some remarks
-
makeMesurment() => makeMeasurement()
-
several places
uint16_t RH_Code = makeMeasurment(RH_HOLD);
float result = (RH_Code * (125.0/65536)) - 6; // now compiler can optimze math compile time
return result;
-
readTemp() and getTemp() are different, but the difference is not well reflected in the name
some suggestions
getPreviousTemperature() - getLastTemperature() -getRHTemperarute()
the other just more descriptive getTemperature()
-
getRH() ==> getHumidity() // more descriptive name
-
changeResolution(uint8_t i);
you could make an ENUM for the parameter RES_LOW RES_MED RES HIGH RES_MAX
-
if the param is out of range you still change the resolution, think you should prevent that
bool Si7020::changeResolution(uint8_t resolution)
{
if (resolution > RES_LOW) return false;
...
return true;
}
-
Wire.endTransmission(); return a value <> 0 in case of error. You could use that for robustness.
See the Wire lib for the details. YOu can use a private error flag to hold the last error.
8 )
The timeout of the makeMeasurement() return 0 in case of an timeout.
Does this not interfere with real measurements? better use the error flag
-
If the max delay = 22 msec you do not need to count to 100 msec for timeout,
25 or 30 should be enough.
-
in makeMeasurement you sometimes ask for 3 bytes but you only read the first 2.
is the 3rd byte the CRC?
-
(you could use less local memory making the footprint a few bytes smaller)
-
Track version, if not used it doesn’t take memory
#define SI7020_LIB_VERSION “0.1.00”
think that’s enough feedback for one iteration 