SparkFun Qwiic 12 Bit ADC - 4 Channel (ADS1015) - I2C Questions

In the ADS1015 Description at https://www.sparkfun.com/products/15334

it says…

" It also has an address jumper that lets you choose one of four unique addresses (0x48, 0x49, 0x4A, 0x4B). With this, you can connect up to four of these on the same I2C bus and have sixteen channels of ADC."

and later on in the parts description it says…

“The I2C address of the ADS1015 is 0x48 and is jumper selectable to 0x49, 0x4A, 0x4B. A multiplexer/Mux is required to communicate to multiple ADS1015 sensors on a single bus. If you need to use more than one ADS1015 sensor consider using the Qwiic Mux Breakout.”

These two comments seem to be in conflict as the first says…

“With this, you can connect up to four of these on the same I2C bus and have sixteen channels of ADC.”

But the second says…

" If you need to use more than one ADS1015 sensor consider using the Qwiic Mux Breakout."

Question 1: Am I understanding correctly that I can not “daisy chain” four (or more) ADS1015 devices on an I2C bus with out using the

SparkFun Qwiic Mux Breakout - 8 Channel (TCA9548A)

Question 2: To read the data for each of the 4-channels on the ADS1015 must I request data from each address individually like…

read address 0x48,

then read address 0x49,

then read address0x4A,

then then address 0x4B

or will requesting data from 0x48 retrieve the data from each of the four ADC’s?

Thanks for any help.

You can daisy-chain 4 boards on a single I2C line. Set each to a different address as indicated and make sure to only keep the pull-up SDA/SCL resistors on the last one of the line and cut them on the other 3. No more boards as each board has its own unique address on a single I2C line.

Now modify Example3_Address.ino and create 4 instances :

ADS1015 adcSensor1;

ADS1015 adcSensor2;

ADS1015 adcSensor3;

ADS1015 adcSensor4;

In setup(), begin each instance with a unique address :

if (adcSensor1.begin(0x48) == true) {…}

if (adcSensor2.begin(0x49) == true) {…}

if (adcSensor3.begin(0x4A) == true) {…}

if (adcSensor4.begin(0x4B) == true) {…}

In loop() you can now read each ADC channel for each board individual. ( X = board, y = channel)

X = 1,2,3,4 and Y = 0,1,2,3

adcSensorX.getSingleEnded(Y);

Thanks Paul. That should get me started. I’ve not done I2C before so I’m feeling my way along. I’ll follow-up post if I get stuck.

Thanks again.