10#ifndef M5_UNIT_ENV_UNIT_SHT20_HPP
11#define M5_UNIT_ENV_UNIT_SHT20_HPP
13#include <M5UnitComponent.hpp>
14#include <m5_utility/container/circular_buffer.hpp>
42 std::array<uint8_t, 6>
raw{};
60class UnitSHT20 :
public Component,
public PeriodicMeasurementAdapter<UnitSHT20, sht20::Data> {
61 M5_UNIT_COMPONENT_HPP_BUILDER(
UnitSHT20, 0x40);
79 explicit UnitSHT20(
const uint8_t addr = DEFAULT_ADDRESS)
80 : Component(addr), _data{new
m5::container::CircularBuffer<
sht20::
Data>(1)}
82 auto ccfg = component_config();
83 ccfg.clock = 400 * 1000U;
84 component_config(ccfg);
90 virtual bool begin()
override;
91 virtual void update(
const bool force =
false)
override;
112 return !empty() ? oldest().temperature() : std::numeric_limits<float>::quiet_NaN();
117 return !empty() ? oldest().celsius() : std::numeric_limits<float>::quiet_NaN();
122 return !empty() ? oldest().fahrenheit() : std::numeric_limits<float>::quiet_NaN();
127 return !empty() ? oldest().humidity() : std::numeric_limits<float>::quiet_NaN();
139 return PeriodicMeasurementAdapter<UnitSHT20, sht20::Data>::startPeriodicMeasurement();
147 return PeriodicMeasurementAdapter<UnitSHT20, sht20::Data>::stopPeriodicMeasurement();
202 bool start_periodic_measurement();
203 bool stop_periodic_measurement();
209 std::unique_ptr<m5::container::CircularBuffer<sht20::Data>> _data{};
213 bool read_user_register(uint8_t& reg);
214 bool write_user_register(
const uint8_t reg);
215 bool trigger_measurement(
const uint8_t cmd, uint16_t& raw);
221constexpr uint8_t TRIGGER_TEMP_HOLD{0xE3};
222constexpr uint8_t TRIGGER_HUMD_HOLD{0xE5};
223constexpr uint8_t TRIGGER_TEMP_NOHOLD{0xF3};
224constexpr uint8_t TRIGGER_HUMD_NOHOLD{0xF5};
225constexpr uint8_t WRITE_USER_REG{0xE6};
226constexpr uint8_t READ_USER_REG{0xE7};
227constexpr uint8_t SOFT_RESET{0xFE};
229constexpr uint8_t REG_RESOLUTION_MASK{0x81};
230constexpr uint8_t REG_HEATER_BIT{0x04};
Temperature and humidity sensor unit (SHT20)
Definition unit_SHT20.hpp:60
bool startPeriodicMeasurement()
Start periodic measurement.
Definition unit_SHT20.hpp:137
bool writeResolution(const sht20::Resolution res)
Write measurement resolution.
Definition unit_SHT20.cpp:237
float celsius() const
Oldest measured temperature (Celsius)
Definition unit_SHT20.hpp:115
bool measureSingleshot(sht20::Data &d)
Measurement single shot.
Definition unit_SHT20.cpp:143
float fahrenheit() const
Oldest measured temperature (Fahrenheit)
Definition unit_SHT20.hpp:120
float temperature() const
Oldest measured temperature (Celsius)
Definition unit_SHT20.hpp:110
float humidity() const
Oldest measured humidity (RH)
Definition unit_SHT20.hpp:125
bool startHeater()
Enable on-chip heater.
Definition unit_SHT20.cpp:247
bool softReset()
Soft reset.
Definition unit_SHT20.cpp:267
void config(const config_t &cfg)
Set the configuration.
Definition unit_SHT20.hpp:101
bool readResolution(sht20::Resolution &res)
Read measurement resolution.
Definition unit_SHT20.cpp:227
bool stopPeriodicMeasurement()
Stop periodic measurement.
Definition unit_SHT20.hpp:145
config_t config() const
Gets the configuration.
Definition unit_SHT20.hpp:96
bool stopHeater()
Disable on-chip heater.
Definition unit_SHT20.cpp:257
Top level namespace of M5Stack.
Settings for begin.
Definition unit_SHT20.hpp:68
sht20::Resolution resolution
Measurement resolution.
Definition unit_SHT20.hpp:72
uint32_t periodic_interval
Periodic measurement interval (ms). Clamped to resolution minimum.
Definition unit_SHT20.hpp:76
bool start_heater
Start heater on begin?
Definition unit_SHT20.hpp:74
bool start_periodic
Start periodic measurement on begin?
Definition unit_SHT20.hpp:70
Light sensor measurement data.
Definition unit_HatYun.hpp:32
Measurement data group.
Definition unit_SHT20.hpp:41
float fahrenheit() const
temperature (Fahrenheit)
Definition unit_SHT20.cpp:69
float temperature() const
temperature (Celsius)
Definition unit_SHT20.hpp:44
float celsius() const
temperature (Celsius)
Definition unit_SHT20.cpp:61
float humidity() const
humidity (RH)
Definition unit_SHT20.cpp:74
std::array< uint8_t, 6 > raw
Definition unit_SHT20.hpp:42
Resolution
Measurement resolution (humidity bits / temperature bits)
Definition unit_SHT20.hpp:30
@ RH11_T11
RH 11 bit, T 11 bit.
@ RH12_T14
RH 12 bit, T 14 bit (default)
@ RH10_T13
RH 10 bit, T 13 bit.
@ RH8_T12
RH 8 bit, T 12 bit.