Two addresses on this board
0x48 out of the box, 0x49 with a blob of solder across one pad. TI's table offers four addresses; this board reaches two of them, because a 10 kΩ resistor is fitted to ADDR and the other two settings would drag a bus line to half the supply.
One resistor decides it
R4 is a 10 kΩ resistor from the ADDR pin to ground, and it is fitted on every one of these boards. That is the whole reason a module answers at 0x48 the first time you scan for it — the chip samples its address pin continuously and sees a low.
Bridging the solder jumper connects ADDR to VCC instead, which wins easily against 10 kΩ. The address becomes 0x49. Wiring the ADDR pin to VCC with a jumper wire does the same thing, and is the option to take if you would rather not get an iron out.
Why two and not four
The datasheet lists four:
| ADDR connected to | Address | On this board |
|---|---|---|
| GND | 0x48 | yes, as shipped |
| VDD | 0x49 | yes, bridge the pad |
| SDA | 0x4A | needs R4 removed first |
| SCL | 0x4B | needs R4 removed first |
The bottom two are the ones to be careful about, because they look like they should work and they break the whole bus when tried. Wiring ADDR to SDA leaves that 10 kΩ pull-down hanging off a line which is already pulled up by 10 kΩ from the same board. The two split the supply and SDA idles at about 1.65 V — under the chip's high threshold of 0.7 × VDD, over its low threshold of 0.3 × VDD, and therefore neither. Nothing on the bus reads a level again.
Removing R4 opens both of them up, and it is a 0603 resistor beside the ADDR pad. That is rework, not a setting, and it is worth saying out loud because the shop listing quotes all four addresses and four modules on one bus. Two is the number this board supports as built.
Two boards, eight channels
Which is usually enough. Both modules take all four wires in parallel — the supply, the ground and both bus lines — and the only thing that distinguishes them is the blob of solder.
One thing to keep an eye on: each board brings its own 10 kΩ pull-up on SDA and on SCL. Two boards make that 5 kΩ, which is still comfortable. Add several other I²C modules, each with their own pull-ups, and the combined resistance can get low enough that devices struggle to pull the line down. If a crowded bus starts misbehaving, that is the first thing to measure.
More than two
Use the microcontroller's second I²C bus. On an ESP32 that is Wire1 with its
own pair of pins, and two more modules there — again at 0x48 and 0x49 — gets you
to sixteen channels without touching a resistor.
The code
Two modules on one bus, eight channels. One has its ADDR pad bridged; the other is untouched. The only difference in the code is the number in the constructor.
// Wiring for this sketch. Both modules share all four wires.
//
// ESP32 3V3 -> VCC on both modules
// ESP32 GND -> GND on both modules
// ESP32 SDA -> SDA on both modules
// ESP32 SCL -> SCL on both modules
//
// Module A: ADDR pad left open -> answers at 0x48
// Module B: ADDR pad bridged -> answers at 0x49
//
// Arduino IDE: any board. Library: "ADS1X15" by Rob Tillaart.
#include <Wire.h>
#include <ADS1X15.h>
ADS1115 A(0x48);
ADS1115 B(0x49);
void start(ADS1115 &ads, const char *name) {
if (!ads.begin()) {
Serial.printf("%s did not answer\n", name);
while (true) delay(1000);
}
ads.setGain(1); // +/-4.096 V
ads.setDataRate(4); // 128 SPS
}
void setup() {
Serial.begin(115200);
delay(500);
Wire.begin();
start(A, "0x48");
start(B, "0x49");
}
void loop() {
for (uint8_t ch = 0; ch < 4; ch++) {
Serial.printf("0x48 A%d %.4f V 0x49 A%d %.4f V\n",
ch, A.toVoltage(A.readADC(ch)),
ch, B.toVoltage(B.readADC(ch)));
}
Serial.println();
delay(1000);
}Scan the bus before running this. If only one address answers, the second board's pad is not bridged properly — look at it under a light, and check the bridge really spans both pads rather than sitting on one of them.
When it does not work
That is what two untouched modules do, and it is not an error message — it is two devices acknowledging at the same moment, which mostly looks like one device behaving oddly. Take one off the bus, bridge its ADDR pad, put it back and scan again. You should now see 0x48 and 0x49.
Solder sitting on one pad and not quite touching the other is the usual cause, and it is hard to see. Put the board under a light with the pads facing you: the bridge has to cross the gap between them. Reflowing with a little extra solder usually fixes it. As a test, wire the ADDR pin to VCC with a jumper instead — it does exactly the same thing.
Not without modifying the board. Those settings need ADDR wired to SDA or SCL, and this board's 10 kΩ pull-down on ADDR would then hang off that bus line, holding it at half the supply — which is neither a high nor a low, and the bus stops working. Removing R4 with an iron opens them up; short of that, two modules per bus is the limit.
Use a second I²C bus. An ESP32 has two, and Wire1 can be given its own pair of pins, so two more modules at 0x48 and 0x49 there give you sixteen channels with no rework. An analog multiplexer in front of one input is the other route, and is cheaper if the channels are slow.
The output that tells you a reading has arrived, or that one crossed a line.
The ALERT pin →Edit this page — content/books/ads1115/two-addresses-on-this-board.mdx
Questions about this product
See what other owners have asked, and read their solutions.
This page covers several products. Choose yours to see the right discussions.
Discuss this article
Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.