Skip to content
Buy 10+ on select items — save 10% auto-applied
Free US shipping on orders $35+
Order by 3pm ET — ships same-day from the US
Skip to main content

Arduino ADS1115: 16-bit Precision Analog Reads | ShillehTek

May 14, 2026 18 views

Arduino ADS1115: 16-bit Precision Analog Reads | ShillehTek
Project

Build an Arduino ADS1115 16-bit I2C analog reader for four high-precision channels, ideal for sensors and battery monitoring using ShillehTek parts.

15 min Beginner3 parts

Project Overview

Arduino + ADS1115: In this project, you will use an Arduino (Nano shown) with an ADS1115 4-channel, 16-bit I2C ADC to read analog voltages with much higher precision than the Arduinos built-in 10-bit ADC.

The ADS1115 provides 64x more resolution than the on-board Arduino ADC, plus PGA gain settings, differential measurements, and noise rejection, which makes it ideal for precision sensors and battery monitoring.

  • Time: ~15 minutes
  • Skill level: Beginner
  • What you will build: An Arduino reading 4 analog inputs via the ADS1115 with 16-bit precision.
ADS1115 16-bit I2C ADC module used for precision analog reads with Arduino
The ADS1115 - 4 channels, 16 bits, I2C interface.

Parts List

From ShillehTek

External

  • A potentiometer (or any analog source) for testing

Note: ADS1115 default I2C address is 0x48 (ADDR pin to GND). Pull ADDR HIGH for 0x49, to SDA for 0x4A, or to SCL for 0x4B (up to 4 ADS1115s on one bus).

Step-by-Step Guide

Step 1 - Inspect the Board

Goal: Identify the ADS1115 pins you will use for power, I2C, and analog inputs.

What to do: Locate VDD, GND, SCL, and SDA on the board, then find the analog inputs A0-A3 and the address pin (ADDR).

Top view of ADS1115 module showing VDD, GND, SCL, SDA, and A0-A3 pins for Arduino I2C wiring
VDD/GND/SCL/SDA on one side, A0-A3 + ADDR + ALERT on the other.
Back view of ADS1115 breakout board showing the ADS1115 IC package
The actual IC is a 10-pin VSSOP - tiny.

Expected result: You know which headers to connect for power (VDD/GND), I2C (SCL/SDA), and your analog source (A0-A3).

Step 2 - Wire It Up

Goal: Connect the ADS1115 to the Arduino over I2C, and attach a test analog source.

What to do: Wire power (VDD and GND) and the I2C lines (SDA and SCL) between the Arduino and ADS1115. Then wire a potentiometer (or another analog source) into A0 on the ADS1115 to test readings.

Arduino wired to ADS1115 over I2C with a potentiometer connected to ADS1115 A0 for analog voltage testing
Power + I2C, then a pot wired to A0 of the ADS1115.
Fritzing diagram of Arduino to ADS1115 I2C wiring and potentiometer connected to ADS1115 A0
Same wiring, schematic view.

Expected result: The ADS1115 is powered and connected to the Arduino I2C bus, with at least one analog input source connected (A0 shown).

Step 3 - Upload the Sketch

Goal: Read all four ADS1115 channels and print raw counts and computed volts to Serial.

What to do: Install Adafruit ADS1X15 via the Arduino Library Manager. Then upload the sketch below.

Code:

#include <Wire.h>
#include <Adafruit_ADS1X15.h>

Adafruit_ADS1115 ads;

void setup() {
  Serial.begin(9600);
  if (!ads.begin()) { Serial.println("ADS1115 not found"); while (1); }
  ads.setGain(GAIN_TWOTHIRDS);   // .144 V full-scale
}

void loop() {
  for (int ch = 0; ch < 4; ch++) {
    int16_t raw = ads.readADC_SingleEnded(ch);
    float volts = ads.computeVolts(raw);
    Serial.print("CH"); Serial.print(ch);
    Serial.print(" raw="); Serial.print(raw);
    Serial.print(" V="); Serial.print(volts, 4);
    Serial.print("   ");
  }
  Serial.println();
  delay(500);
}

Expected result: The Arduino prints four channels (CH0-CH3) with raw ADC values and voltages to the Serial Monitor.

Step 4 - Watch the Output

Goal: Confirm you are getting stable, high-resolution readings.

What to do: Open the Serial Monitor at 9600 baud and vary your potentiometer (or analog source) to see the voltage change.

Arduino Serial Monitor output showing ADS1115 four-channel 16-bit raw readings and computed voltages
Four channels, four-decimal voltages, real precision.

Expected result: You see changing voltages (with four decimal places) as you adjust the analog input.

Step 5 - Where to Take It Next

Goal: Apply the ADS1115 to higher-precision sensor and monitoring projects.

What to do: Use the same I2C wiring and expand the build in any of these directions:

  • Read photoresistors with better dynamic range than the Arduino native ADC
  • Build a precision battery voltage monitor for solar or off-grid kits
  • Use differential mode to subtract two channels for current-shunt sensing
  • Stack 4 ADS1115s for 16 channels of 16-bit ADC on two pins

Expected result: You have a working ADS1115 baseline that can scale to more channels and more demanding analog measurements.

Conclusion

The ADS1115 turns the Arduinos analog input from rough into precise by adding a 16-bit, 4-channel ADC over I2C. Once you start measuring with higher resolution and stable voltage readings, analog projects get cleaner fast.

Want the exact parts used in this build? Grab them from ShillehTek.com. If you want help customizing this project or building precision instrumentation for your product, check out our IoT consulting services.

Photo and wiring diagram credit: Instructables.