8 static const char *
const TAG =
"ads1115";
9 static const uint8_t ADS1115_REGISTER_CONVERSION = 0x00;
10 static const uint8_t ADS1115_REGISTER_CONFIG = 0x01;
13 ESP_LOGCONFIG(TAG,
"Setting up ADS1115...");
15 if (!this->
read_byte_16(ADS1115_REGISTER_CONVERSION, &value)) {
20 ESP_LOGCONFIG(TAG,
"Configuring ADS1115...");
25 config |= 0b0000000000000000;
37 config |= 0b0000000000000000;
41 config |= 0b0000000100000000;
50 config |= 0b0000000000000000;
54 config |= 0b0000000000000000;
58 config |= 0b0000000000000000;
62 config |= 0b0000000000000011;
71 ESP_LOGCONFIG(TAG,
"Setting up ADS1115...");
74 ESP_LOGE(TAG,
"Communication with ADS1115 failed!");
82 config &= 0b1000111111111111;
83 config |= (multiplexer & 0b111) << 12;
87 config &= 0b1111000111111111;
88 config |= (gain & 0b111) << 9;
92 config &= 0b1111111100011111;
93 config |= (samplerate & 0b111) << 5;
97 config |= 0b1000000000000000;
109 switch (samplerate) {
128 switch (samplerate) {
160 uint32_t start =
millis();
161 while (this->
read_byte_16(ADS1115_REGISTER_CONFIG, &config) && (config >> 15) == 0) {
162 if (
millis() - start > 100) {
163 ESP_LOGW(TAG,
"Reading ADS1115 timed out");
172 uint16_t raw_conversion;
173 if (!this->
read_byte_16(ADS1115_REGISTER_CONVERSION, &raw_conversion)) {
179 bool negative = (raw_conversion >> 15) == 1;
188 raw_conversion |= 0x8000;
190 raw_conversion &= 0xF7FF;
194 auto signed_conversion =
static_cast<int16_t
>(raw_conversion);
200 millivolts = (signed_conversion * 6144) / divider;
203 millivolts = (signed_conversion * 4096) / divider;
206 millivolts = (signed_conversion * 2048) / divider;
209 millivolts = (signed_conversion * 1024) / divider;
212 millivolts = (signed_conversion * 512) / divider;
215 millivolts = (signed_conversion * 256) / divider;
222 return millivolts / 1e3f;
bool read_byte_16(uint8_t a_register, uint16_t *data)
void status_set_warning(const char *message="unspecified")
uint32_t IRAM_ATTR HOT millis()
void dump_config() override
void status_clear_warning()
void IRAM_ATTR HOT yield()
virtual void mark_failed()
Mark this component as failed.
Implementation of SPI Controller mode.
bool write_byte_16(uint8_t a_register, uint16_t data)
float request_measurement(ADS1115Multiplexer multiplexer, ADS1115Gain gain, ADS1115Resolution resolution, ADS1115Samplerate samplerate)
Helper method to request a measurement from a sensor.
void IRAM_ATTR HOT delay(uint32_t ms)