M5Unit-DISTANCE 0.2.1 git rev:66f796f
Loading...
Searching...
No Matches
m5::unit::UnitRCWL9620 Class Reference

An ultrasonic distance measuring sensor unit. More...

#include <unit_RCWL9620.hpp>

Inheritance diagram for m5::unit::UnitRCWL9620:
m5::unit::UnitUltraSonicI2C m5::unit::UnitUltraSonicIO

Classes

struct  config_t
 Settings for begin. More...
 
class  Interface
 @cond0 More...
 

Public Member Functions

 UnitRCWL9620 (const uint8_t addr=DEFAULT_ADDRESS)
 Constructor.
 
virtual bool begin () override
 Begin communication and optionally start periodic measurement.
 
virtual void update (const bool force=false) override
 Update periodic measurement.
 
Settings for begin
config_t config ()
 Gets the configuration.
 
void config (const config_t &cfg)
 Set the configuration.
 
Measurement data by periodic
float distance () const
 Oldest distance (mm)
 
Periodic measurement
bool startPeriodicMeasurement (const uint32_t interval)
 Start periodic measurement.
 
bool stopPeriodicMeasurement ()
 Stop periodic measurement.
 
Single shot measurement
bool measureSingleshot (rcwl9620::Data &data)
 Measurement single shot.
 

Protected Member Functions

bool request_measurement ()
 
bool read_measurement (rcwl9620::Data &d, bool &timeouted)
 
bool start_periodic_measurement (const uint32_t interval)
 
bool stop_periodic_measurement ()
 
Interfaceinterface ()
 
 M5_UNIT_COMPONENT_PERIODIC_MEASUREMENT_ADAPTER_HPP_BUILDER (UnitRCWL9620, rcwl9620::Data)
 
virtual uint32_t minimum_interval () const
 

Protected Attributes

std::unique_ptr< m5::container::CircularBuffer< rcwl9620::Data > > _data {}
 

Detailed Description

An ultrasonic distance measuring sensor unit.

Note
The RCWL-9620 may occasionally time out during I2C reads, depending on the core (a sensor hardware characteristic). The library automatically recovers on the next measurement cycle.

Constructor & Destructor Documentation

◆ UnitRCWL9620()

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

Constructor.

Parameters
addrI2C address (default: 0x57)

Member Function Documentation

◆ begin()

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

Begin communication and optionally start periodic measurement.

Returns
True if successful

Reimplemented in m5::unit::UnitUltraSonicI2C, and m5::unit::UnitUltraSonicIO.

◆ config() [1/2]

config_t m5::unit::UnitRCWL9620::config ( )
inline

Gets the configuration.

Returns
Copy of current configuration

◆ config() [2/2]

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

Set the configuration.

Parameters
cfgConfiguration to apply at next begin()

◆ distance()

float m5::unit::UnitRCWL9620::distance ( ) const
inline

Oldest distance (mm)

Returns
Distance in mm, or NaN if no data available

◆ measureSingleshot()

bool m5::unit::UnitRCWL9620::measureSingleshot ( rcwl9620::Data & data)

Measurement single shot.

Parameters
[out]dataMeasured data
Returns
True if successful
Warning
During periodic detection runs, an error is returned
Blocked until measurement is complete

◆ startPeriodicMeasurement()

bool m5::unit::UnitRCWL9620::startPeriodicMeasurement ( const uint32_t interval)
inline

Start periodic measurement.

Parameters
intervalMeasurement interval (ms). Minimum: 150ms for I2C, 50ms for GPIO
Returns
True if successful

◆ stopPeriodicMeasurement()

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

Stop periodic measurement.

Returns
True if successful

◆ update()

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

Update periodic measurement.

Parameters
forceForce read regardless of timing