configs/components/ads131m08/ads131m08.h

35 lines
1.0 KiB
C++

#pragma once
// using external voltage reference
#include "esphome/core/component.h"
#include "esphome/components/spi/spi.h"
#include "esphome/components/sensor/sensor.h"
namespace esphome {
namespace ads131m08 {
class ADS131M08Sensor : public sensor::Sensor, public Component
{
};
class ADS131M08Hub : public Component, public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW, spi::CLOCK_PHASE_TRAILING, spi::DATA_RATE_8MHZ>
{
public:
void setup() override;
void loop() override;
void set_drdy_pin(InternalGPIOPin *pin) { drdy_pin_ = pin; }
void register_sensor(int channel, ADS131M08Sensor *s) { sensors_[channel] = s; }
void set_reference_voltage(float reference_voltage) { this->reference_voltage_ = reference_voltage; }
void dump_config() override;
protected:
float reference_voltage_;
InternalGPIOPin *drdy_pin_;
ADS131M08Sensor *sensors_[8] = {nullptr};
volatile bool data_ready_{false};
static void isr(ADS131M08Hub *arg);
void read_data_();
};
} // namespace ads131m08
} // namespace esphome