10#ifndef M5_UNIT_ENV_UNIT_HATYUN_HPP
11#define M5_UNIT_ENV_UNIT_HATYUN_HPP
13#include <M5UnitComponent.hpp>
14#include <m5_utility/container/circular_buffer.hpp>
45class HatYun :
public Component,
public PeriodicMeasurementAdapter<HatYun, hatyun::Data> {
46 M5_UNIT_COMPONENT_HPP_BUILDER(
HatYun, 0x38);
63 explicit HatYun(
const uint8_t addr = DEFAULT_ADDRESS);
68 virtual bool begin()
override;
69 virtual void update(
const bool force =
false)
override;
90 return !empty() ? oldest().light : 0;
103 return PeriodicMeasurementAdapter<HatYun, hatyun::Data>::startPeriodicMeasurement(interval);
111 return PeriodicMeasurementAdapter<HatYun, hatyun::Data>::stopPeriodicMeasurement();
127 bool writeLED(
const uint8_t num,
const uint8_t r,
const uint8_t g,
const uint8_t b);
135 bool writeAllLED(
const uint8_t r,
const uint8_t g,
const uint8_t b);
142 bool writeRainbow(
const uint8_t offset = 0,
const uint8_t brightness = 255);
156 bool start_periodic_measurement(
const uint32_t interval);
157 bool stop_periodic_measurement();
162 virtual std::shared_ptr<Adapter> ensure_adapter(
const uint8_t ch);
165 std::unique_ptr<m5::container::CircularBuffer<hatyun::Data>> _data{};
176constexpr uint8_t LIGHT_REG{0x00};
177constexpr uint8_t LED_REG{0x01};
Hat Yun is an environmental sensor hat that integrates SHT20, BMP280, and STM32 LED/Light controller.
Definition unit_HatYun.hpp:45
void config(const config_t &cfg)
Set the configuration.
Definition unit_HatYun.hpp:79
bool readLight(uint16_t &value)
Read light sensor value.
Definition unit_HatYun.cpp:171
bool writeAllLED(const uint8_t r, const uint8_t g, const uint8_t b)
Write all LEDs to the same color.
Definition unit_HatYun.cpp:111
bool writeLED(const uint8_t num, const uint8_t r, const uint8_t g, const uint8_t b)
Write a single LED color.
Definition unit_HatYun.cpp:102
UnitBMP280 bmp280
BMP280 instance (pressure)
Definition unit_HatYun.hpp:61
UnitSHT20 sht20
SHT20 instance (temperature/humidity)
Definition unit_HatYun.hpp:60
bool stopPeriodicMeasurement()
Stop periodic light sensor polling.
Definition unit_HatYun.hpp:109
config_t config() const
Gets the configuration.
Definition unit_HatYun.hpp:74
bool startPeriodicMeasurement(const uint32_t interval=1000)
Start periodic light sensor polling.
Definition unit_HatYun.hpp:101
uint16_t light() const
Oldest light sensor value.
Definition unit_HatYun.hpp:88
bool writeRainbow(const uint8_t offset=0, const uint8_t brightness=255)
Write rainbow pattern across all LEDs.
Definition unit_HatYun.cpp:122
Pressure and temperature sensor unit.
Definition unit_BMP280.hpp:150
Temperature and humidity sensor unit (SHT20)
Definition unit_SHT20.hpp:60
Top level namespace of M5Stack.
Settings for begin.
Definition unit_HatYun.hpp:53
bool start_periodic
Start periodic measurement on begin?
Definition unit_HatYun.hpp:55
uint32_t periodic_interval
Periodic measurement interval (ms)
Definition unit_HatYun.hpp:57
Light sensor measurement data.
Definition unit_HatYun.hpp:32
uint16_t light
Raw light sensor value.
Definition unit_HatYun.hpp:33
BMP280 Unit for M5UnitUnified.
constexpr uint8_t NUM_LEDS
Number of RGB LEDs on Hat Yun.
Definition unit_HatYun.hpp:26
SHT20 Unit for M5UnitUnified.