10#ifndef M5_UNIT_TUBE_UNIT_MCP_H10_HPP
11#define M5_UNIT_TUBE_UNIT_MCP_H10_HPP
13#include <M5UnitComponent.hpp>
33 inline float pressure()
const
35 return voltage * k + b;
80class UnitMCP_H10 :
public Component,
public PeriodicMeasurementAdapter<UnitMCP_H10, mcp_h10::Data> {
92 : Component(DEFAULT_ADDRESS),
93 _data{new
m5::container::CircularBuffer<
mcp_h10::Data>(1)},
102 virtual bool begin()
override;
103 virtual void update(
const bool force =
false)
override;
167 return !empty() ? oldest().pressure() : std::numeric_limits<float>::quiet_NaN();
180 return PeriodicMeasurementAdapter<UnitMCP_H10, mcp_h10::Data>::startPeriodicMeasurement(interval);
188 return PeriodicMeasurementAdapter<UnitMCP_H10, mcp_h10::Data>::stopPeriodicMeasurement();
206 return _calib_zero_diff != 0.0f;
215 _calib_zero_diff = vzero - ideal_zero_voltage;
220 _calib_zero_diff = 0.0f;
226 bool start_periodic_measurement(
const uint32_t interval);
227 bool stop_periodic_measurement();
229 std::unique_ptr<m5::container::CircularBuffer<mcp_h10::Data>> _data{};
231 M5_UNIT_COMPONENT_PERIODIC_MEASUREMENT_ADAPTER_HPP_BUILDER(
UnitMCP_H10, mcp_h10::Data);
234 float _minV{}, _maxV{}, _coefficient{}, _offset{};
235 float _calib_zero_diff{};
243class UnitMCP_H10_B200KPPN :
public UnitMCP_H10 {
244 M5_UNIT_COMPONENT_HPP_BUILDER(UnitMCP_H10_B200KPPN, 0x00 );
247 explicit UnitMCP_H10_B200KPPN() :
UnitMCP_H10(0.1f, 3.1f, 100.f, -110.f)
250 virtual ~UnitMCP_H10_B200KPPN() =
default;
MCP-H10 family unit base class.
bool measureSingleshot(mcp_h10::Data &d)
Measurement single shot.
Definition unit_MCP_H10.cpp:78
bool isCalibrated() const
Set calibration parameter.
Definition unit_MCP_H10.hpp:204
bool stopPeriodicMeasurement()
Stop periodic measurement.
Definition unit_MCP_H10.hpp:186
UnitMCP_H10(const float minV, const float maxV, const float coefficient, const float offset)
Constructor.
Definition unit_MCP_H10.hpp:91
config_t config()
Gets the configration.
Definition unit_MCP_H10.hpp:121
float maximumVoltage() const
maximum voltage (OH)
Definition unit_MCP_H10.hpp:150
float minimumVoltage() const
minimum voltage (OL)
Definition unit_MCP_H10.hpp:145
void setCalibration(const float vzero)
Set calibration parameter.
Definition unit_MCP_H10.hpp:212
float offset() const
offset (B)
Definition unit_MCP_H10.hpp:140
void config(const config_t &cfg)
Set the configration.
Definition unit_MCP_H10.hpp:126
bool startPeriodicMeasurement(const uint32_t interval)
Start periodic measurement.
Definition unit_MCP_H10.hpp:178
void clearCalibration()
Disable calibration.
Definition unit_MCP_H10.hpp:218
float pressure() const
Oldest measured pressure (kPA)
Definition unit_MCP_H10.hpp:165
float voltageRange() const
Voltage range.
Definition unit_MCP_H10.hpp:155
float coefficient() const
coefficient (K)
Definition unit_MCP_H10.hpp:135
Top level namespace of M5stack.
Settings for begin.
Definition unit_MCP_H10.hpp:109
bool start_periodic
Start periodic measurement on begin?
Definition unit_MCP_H10.hpp:111
float calib_vzero
Calibration (Voltage value to be considered as pressure 0)
Definition unit_MCP_H10.hpp:115
uint32_t interval_ms
Interval time if start on begin (ms)
Definition unit_MCP_H10.hpp:113
Measurement data group.
Definition unit_MCP_H10.hpp:29