M5Unit-ENV 1.4.0 git rev:c1b5980
Loading...
Searching...
No Matches
m5::unit::UnitSHT40 Class Reference

Temperature and humidity, sensor unit. More...

#include <unit_SHT40.hpp>

Inheritance diagram for m5::unit::UnitSHT40:

Classes

struct  config_t
 Settings for begin. More...
 

Public Member Functions

 UnitSHT40 (const uint8_t addr=DEFAULT_ADDRESS)
 
virtual bool begin () override
 
virtual void update (const bool force=false) override
 
Settings for begin
config_t config () const
 Gets the configuration.
 
void config (const config_t &cfg)
 Set the configuration.
 
Measurement data by periodic
float temperature () const
 Oldest measured temperature (Celsius)
 
float celsius () const
 Oldest measured temperature (Celsius)
 
float fahrenheit () const
 Oldest measured temperature (Fahrenheit)
 
float humidity () const
 Oldest measured humidity (RH)
 
Periodic measurement
bool startPeriodicMeasurement (const sht40::Precision precision, const sht40::Heater heater, const float duty=0.05f)
 Start periodic measurement.
 
bool startPeriodicMeasurement (const sht40::HeaterPower power, const sht40::HeaterDuration duration, const float duty=0.05f)
 Start periodic measurement with heater.
 
bool startPeriodicMeasurement ()
 Start periodic measurement using previous settings.
 
bool stopPeriodicMeasurement ()
 Stop periodic measurement.
 
Single shot measurement
bool measureSingleshot (sht40::Data &d, const sht40::Precision precision=sht40::Precision::High, const sht40::Heater heater=sht40::Heater::None)
 Measurement single shot.
 
bool measureSingleshot (sht40::Data &d, const sht40::HeaterPower power, const sht40::HeaterDuration duration)
 Measurement single shot with heater.
 
Reset
bool softReset ()
 Soft reset.
 
bool generalReset ()
 General reset.
 
Serial number
bool readSerialNumber (uint32_t &serialNumber)
 Read the serial number value.
 
bool readSerialNumber (char *serialNumber)
 Read the serial number string.
 

Protected Member Functions

bool start_periodic_measurement (const sht40::Precision precision, const sht40::Heater heater, const float duty)
 
bool stop_periodic_measurement ()
 
bool read_measurement (sht40::Data &d)
 
void reset_status ()
 
bool soft_reset ()
 
 M5_UNIT_COMPONENT_PERIODIC_MEASUREMENT_ADAPTER_HPP_BUILDER (UnitSHT40, sht40::Data)
 

Protected Attributes

std::unique_ptr< m5::container::CircularBuffer< sht40::Data > > _data {}
 
uint8_t _cmd {}
 
uint8_t _measureCmd {}
 
types::elapsed_time_t _latest_heater {}
 
types::elapsed_time_t _interval_heater {}
 
uint32_t _duration_measure {}
 
uint32_t _duration_heater {}
 

Detailed Description

Temperature and humidity, sensor unit.

Member Function Documentation

◆ generalReset()

bool m5::unit::UnitSHT40::generalReset ( )

General reset.

Reset using I2C general call

Returns
True if successful
Warning
This is a reset by General command, the command is also sent to all devices with I2C connections
Not supported with m5::I2C_Class. The bus hangs because m5::I2C_Class has no timeout on bus recovery after a general call reset

◆ measureSingleshot() [1/2]

bool m5::unit::UnitSHT40::measureSingleshot ( sht40::Data & d,
const sht40::HeaterPower power,
const sht40::HeaterDuration duration )

Measurement single shot with heater.

Parameters
[out]dMeasured data
powerHeater power level
durationHeater activation duration
Returns
True if successful
Note
Always performs high precision measurement regardless of heater power level
Blocking until the process is complete
Warning
During periodic detection runs, an error is returned
During heater operation, sensor specifications are not valid

◆ measureSingleshot() [2/2]

bool m5::unit::UnitSHT40::measureSingleshot ( sht40::Data & d,
const sht40::Precision precision = sht40::Precision::High,
const sht40::Heater heater = sht40::Heater::None )

Measurement single shot.

Parameters
[out]dMeasured data
precisionSensor precision
heaterHeater behavior
Returns
True if successful
Note
Blocking until the process is complete
Warning
During periodic detection runs, an error is returned
If heater is activated, the accuracy of the returned value is not guaranteed
Deprecated
Use measureSingleshot(Data&, Precision) for no-heater or measureSingleshot(Data&, HeaterPower, HeaterDuration) for heater measurement. When heater != None, the Precision parameter selects heater power, not measurement precision.
See also
UnitSHT40::startPeriodicMeasurement

◆ readSerialNumber() [1/2]

bool m5::unit::UnitSHT40::readSerialNumber ( char * serialNumber)

Read the serial number string.

Parameters
[out]serialNumberOutput buffer
Returns
True if successful
Warning
serialNumber must be at least 9 bytes
During periodic detection runs, an error is returned

◆ readSerialNumber() [2/2]

bool m5::unit::UnitSHT40::readSerialNumber ( uint32_t & serialNumber)

Read the serial number value.

Parameters
[out]serialNumberserial number value
Returns
True if successful
Note
The serial number is 32 bit
Warning
During periodic detection runs, an error is returned

◆ softReset()

bool m5::unit::UnitSHT40::softReset ( )

Soft reset.

Returns
True if successful

◆ startPeriodicMeasurement() [1/3]

bool m5::unit::UnitSHT40::startPeriodicMeasurement ( )
inline

Start periodic measurement using previous settings.

Returns
True if successful
Note
Uses the precision, heater, and duty settings from the last successful startPeriodicMeasurement or begin

◆ startPeriodicMeasurement() [2/3]

bool m5::unit::UnitSHT40::startPeriodicMeasurement ( const sht40::HeaterPower power,
const sht40::HeaterDuration duration,
const float duty = 0.05f )
inline

Start periodic measurement with heater.

Parameters
powerHeater power level
durationHeater activation duration
dutyDuty for activate heater [~ 0.05f]
Returns
True if successful
Note
Always performs high precision measurement regardless of heater power level
Warning
Datasheet says "keeping in mind that the heater is designed for a maximal duty cycle of less than 5%"

◆ startPeriodicMeasurement() [3/3]

bool m5::unit::UnitSHT40::startPeriodicMeasurement ( const sht40::Precision precision,
const sht40::Heater heater,
const float duty = 0.05f )
inline

Start periodic measurement.

Parameters
precisionSensor precision
heaterHeater behavior
dutyDuty for activate heater
Returns
True if successful
Note
If the heater is Long or Short, the heater will be active periodically within the specified duty
Warning
Datasheet says "keeping in mind that the heater is designed for a maximal duty cycle of less than 5%"
Deprecated
Use startPeriodicMeasurement(Precision) for no-heater or startPeriodicMeasurement(HeaterPower, HeaterDuration, float) for heater measurement. When heater != None, the Precision parameter selects heater power, not measurement precision.

◆ stopPeriodicMeasurement()

bool m5::unit::UnitSHT40::stopPeriodicMeasurement ( )
inline

Stop periodic measurement.

Returns
True if successful