M5Unit-LIGHT 0.0.2 git rev:6d734f0
Loading...
Searching...
No Matches
m5::unit::UnitBH1750FVI Class Reference

Digital ambient light sensor. More...

#include <unit_BH1750FVI.hpp>

Inheritance diagram for m5::unit::UnitBH1750FVI:

Classes

struct  config_t
 Settings for begin. More...
 

Public Member Functions

 UnitBH1750FVI (const uint8_t addr=DEFAULT_ADDRESS)
 Constructor.
 
virtual ~UnitBH1750FVI ()
 Destructor.
 
virtual bool begin () override
 Begin the unit.
 
virtual void update (const bool force=false) override
 Update the unit.
 
Settings for begin
config_t config () const
 Gets the configuration.
 
void config (const config_t &cfg)
 Set the configuration.
 
Measurement data by periodic
float lux () const
 Latest illuminance (lx)
 
uint16_t raw () const
 Latest raw value.
 
bh1750fvi::Resolution resolution () const
 Resolution currently in effect.
 
uint8_t mtreg () const
 MTreg currently in effect.
 
Periodic measurement
bool startPeriodicMeasurement ()
 Start periodic measurement in the current settings.
 
bool startPeriodicMeasurement (const bh1750fvi::Resolution resolution, const uint8_t mtreg)
 Start periodic measurement.
 
bool stopPeriodicMeasurement ()
 Stop periodic measurement.
 
Single shot measurement
bool measureSingleShot (bh1750fvi::Data &data, const bh1750fvi::Resolution resolution=bh1750fvi::Resolution::High, const uint8_t mtreg=bh1750fvi::MTREG_DEFAULT)
 Measure single-shot.
 
MTreg (sensitivity) control
bool writeMTreg (const uint8_t mtreg)
 Write MTreg as raw value (31..254)
 
bool writeSensitivityFactor (const float factor)
 Write MTreg as sensitivity factor (0.45..3.68)
 
uint8_t readMTreg () const
 Gets the current MTreg cache.
 
Power management
bool powerOn ()
 Write POWER_ON opcode.
 
bool powerDown ()
 Write POWER_DOWN opcode.
 
bool softReset ()
 Write RESET opcode (clears data register; requires POWER_ON state)
 

Static Public Attributes

static constexpr uint8_t ALT_ADDRESS {0x5C}
 Alternate I2C address when ADDR pin is tied high.
 

Protected Member Functions

bool start_periodic_measurement ()
 
bool start_periodic_measurement (const bh1750fvi::Resolution resolution, const uint8_t mtreg)
 
bool stop_periodic_measurement ()
 
bool read_measurement (bh1750fvi::Data &data)
 
bool write_opcode (const uint8_t opcode)
 
bool write_mtreg_opcodes (const uint8_t mtreg)
 
uint8_t opcode_for (const bh1750fvi::Mode mode, const bh1750fvi::Resolution resolution) const
 
void apply_interval (const bh1750fvi::Resolution resolution, const uint8_t mtreg)
 
 M5_UNIT_COMPONENT_PERIODIC_MEASUREMENT_ADAPTER_HPP_BUILDER (UnitBH1750FVI, bh1750fvi::Data)
 

Protected Attributes

std::unique_ptr< m5::container::CircularBuffer< bh1750fvi::Data > > _data {}
 
config_t _cfg {}
 
bh1750fvi::Resolution _resolution {bh1750fvi::Resolution::High}
 
uint8_t _mtreg {bh1750fvi::MTREG_DEFAULT}
 

Detailed Description

Digital ambient light sensor.

Shared between UnitDLight (SKU:U136) and HatDLight (SKU:U134).

Constructor & Destructor Documentation

◆ UnitBH1750FVI()

m5::unit::UnitBH1750FVI::UnitBH1750FVI ( const uint8_t addr = DEFAULT_ADDRESS)
inlineexplicit

Constructor.

Parameters
addrI2C address

Member Function Documentation

◆ begin()

bool m5::unit::UnitBH1750FVI::begin ( )
overridevirtual

Begin the unit.

Returns
True if successful

◆ config() [1/2]

config_t m5::unit::UnitBH1750FVI::config ( ) const
inline

Gets the configuration.

Returns
Current configuration

◆ config() [2/2]

void m5::unit::UnitBH1750FVI::config ( const config_t & cfg)
inline

Set the configuration.

Parameters
cfgConfiguration to apply

◆ lux()

float m5::unit::UnitBH1750FVI::lux ( ) const
inline

Latest illuminance (lx)

Returns
Illuminance in lx (NaN if no data)

◆ measureSingleShot()

bool m5::unit::UnitBH1750FVI::measureSingleShot ( bh1750fvi::Data & data,
const bh1750fvi::Resolution resolution = bh1750fvi::Resolution::High,
const uint8_t mtreg = bh1750fvi::MTREG_DEFAULT )

Measure single-shot.

Parameters
[out]dataMeasured data
resolutionResolution to use (default: High)
mtregMTreg value (default: 69)
Returns
True if successful
Warning
Blocks until the measurement completes (up to 24 ms (Low) or 180 ms (High/High2), scaled by mtreg/69)

◆ mtreg()

uint8_t m5::unit::UnitBH1750FVI::mtreg ( ) const
inline

MTreg currently in effect.

Returns
Current MTreg

◆ powerDown()

bool m5::unit::UnitBH1750FVI::powerDown ( )

Write POWER_DOWN opcode.

Returns
True if successful

◆ powerOn()

bool m5::unit::UnitBH1750FVI::powerOn ( )

Write POWER_ON opcode.

Returns
True if successful

◆ raw()

uint16_t m5::unit::UnitBH1750FVI::raw ( ) const
inline

Latest raw value.

Returns
Raw 16-bit ADC value (0 if no data)

◆ readMTreg()

uint8_t m5::unit::UnitBH1750FVI::readMTreg ( ) const
inline

Gets the current MTreg cache.

Returns
Current MTreg

◆ resolution()

bh1750fvi::Resolution m5::unit::UnitBH1750FVI::resolution ( ) const
inline

Resolution currently in effect.

Returns
Current resolution

◆ softReset()

bool m5::unit::UnitBH1750FVI::softReset ( )

Write RESET opcode (clears data register; requires POWER_ON state)

Returns
True if successful

◆ startPeriodicMeasurement() [1/2]

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

Start periodic measurement in the current settings.

Returns
True if successful

◆ startPeriodicMeasurement() [2/2]

bool m5::unit::UnitBH1750FVI::startPeriodicMeasurement ( const bh1750fvi::Resolution resolution,
const uint8_t mtreg )
inline

Start periodic measurement.

Parameters
resolutionResolution
mtregMTreg value (31..254)
Returns
True if successful

◆ stopPeriodicMeasurement()

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

Stop periodic measurement.

Returns
True if successful

◆ update()

void m5::unit::UnitBH1750FVI::update ( const bool force = false)
overridevirtual

Update the unit.

Parameters
forceIf true, force a read regardless of the interval

◆ writeMTreg()

bool m5::unit::UnitBH1750FVI::writeMTreg ( const uint8_t mtreg)

Write MTreg as raw value (31..254)

Parameters
mtregMTreg
Returns
True if successful
Note
During periodic measurement, the current mode opcode is re-sent after writing MTreg.

◆ writeSensitivityFactor()

bool m5::unit::UnitBH1750FVI::writeSensitivityFactor ( const float factor)

Write MTreg as sensitivity factor (0.45..3.68)

Parameters
factorSensitivity factor (1.0 corresponds to mtreg=69)
Returns
True if successful