14 adc_unit_t unit, adc_channel_t channel, adc_atten_t attenuation = ADC_ATTEN_DB_12,
15 adc_bitwidth_t bitwidth =
static_cast<adc_bitwidth_t
>(SOC_ADC_DIGI_MIN_BITWIDTH),
16 float reference_voltage = 3.3f)
19 m_attenuation_(attenuation),
20 m_bitwidth_(bitwidth),
21 m_reference_voltage_(reference_voltage),
22 m_max_raw_((1 << bitwidth) - 1)
24 adc_oneshot_unit_init_cfg_t unit_cfg = {};
25 unit_cfg.unit_id = m_unit_;
26 unit_cfg.ulp_mode = ADC_ULP_MODE_DISABLE;
28 ESP_ERROR_CHECK(adc_oneshot_new_unit(&unit_cfg, &m_oneshot_));
30 adc_oneshot_chan_cfg_t chan_cfg = {
31 .atten = m_attenuation_,
32 .bitwidth = m_bitwidth_,
34 ESP_ERROR_CHECK(adc_oneshot_config_channel(m_oneshot_, m_channel_, &chan_cfg));
41 adc_oneshot_del_unit(m_oneshot_);
48 if (adc_oneshot_read(m_oneshot_, m_channel_, &raw) == ESP_OK)
50 return Normalize(raw);
56 float Normalize(
int raw)
const
58 return (
static_cast<float>(raw) /
static_cast<float>(m_max_raw_)) *
63 adc_channel_t m_channel_;
64 adc_atten_t m_attenuation_;
65 adc_bitwidth_t m_bitwidth_;
66 float m_reference_voltage_;
68 adc_oneshot_unit_handle_t m_oneshot_ =
nullptr;