13 ESP_LOGCONFIG(TAG,
"Running setup");
15 if (!this->
read_byte_16(ADS1115_REGISTER_CONVERSION, &value)) {
23 config |= 0b0000000000000000;
35 config |= 0b0000000000000000;
39 config |= 0b0000000100000000;
48 config |= 0b0000000000000000;
52 config |= 0b0000000000000000;
56 config |= 0b0000000000000000;
60 config |= 0b0000000000000011;
80 config &= 0b1000111111111111;
81 config |= (multiplexer & 0b111) << 12;
85 config &= 0b1111000111111111;
86 config |= (
gain & 0b111) << 9;
90 config &= 0b1111111100011111;
91 config |= (samplerate & 0b111) << 5;
95 config |= 0b1000000000000000;
107 switch (samplerate) {
126 switch (samplerate) {
158 uint32_t start =
millis();
159 while (this->
read_byte_16(ADS1115_REGISTER_CONFIG, &config) && (config >> 15) == 0) {
160 if (
millis() - start > 100) {
161 ESP_LOGW(TAG,
"Reading ADS1115 timed out");
170 uint16_t raw_conversion;
171 if (!this->
read_byte_16(ADS1115_REGISTER_CONVERSION, &raw_conversion)) {
177 bool negative = (raw_conversion >> 15) == 1;
186 raw_conversion |= 0x8000;
188 raw_conversion &= 0xF7FF;
192 auto signed_conversion =
static_cast<int16_t
>(raw_conversion);
198 millivolts = (signed_conversion * 6144) / divider;
201 millivolts = (signed_conversion * 4096) / divider;
204 millivolts = (signed_conversion * 2048) / divider;
207 millivolts = (signed_conversion * 1024) / divider;
210 millivolts = (signed_conversion * 512) / divider;
213 millivolts = (signed_conversion * 256) / divider;
220 return millivolts / 1e3f;