ADS1115: analog-to-digital converter for Arduino

By James Smith


For those projects where a conversion from analog to digital signal is needed, and the microcontroller used does not have this capability, it is interesting to have this type of module ADS1115, which provides this ADC conversion capability with 16-bit accuracy.

Furthermore, this electronic component may also be interesting to extend the conversion capabilities, even if the microcontroller you are using for your project has such capability but you need something else.

A/D and D/A converters

There are two types of fundamental signal converters, but there are also other chips capable of doing both types of conversion at the same time. These are:

  • CAD (Analog to Digital Converter) or ADC (Analog to Digital Converter): is a type of device that converts the analog signal into a digital signal. To do this, you can use a binary code that encodes the analog signal. For example, associating a binary value to a specific voltage or current value. For example, with 4-bit resolution can go from 0000 to 1111, and could correspond to 0v and 12v respectively. Although if you use a sign bit you can measure negative and positive values.
  • CDA (Digital-to-Analog Converter) or DAC (Digital-to-Analog Converter): it is a device that does the opposite to the above, that is, it transforms binary data into an analog current or voltage signal.

With these converters it is possible to pass from one type of signal to another, as you will see in the case of the ADS1115, which would correspond to the first case.

About the ADS1115

pinout ADS1115

The ADS1115 is a signal converter module. What it does is convert from analogue to digital. You may think that the Arduino development board itself already includes internal ADCs to be able to do this task when using the analog inputs and that they can be compatible with the microcontroller signals.

Yes, that’s right, they have 6 10-bit resolution ADCs in the UNO, Mini and Nano. But with the ADS1115 you add another one with a 16-bit resolution, higher than the Arduino one, plus you can free the Arduino shell. Fifteen of them are for the measurement and one last bit for the sign of the analog signal, because as you know, the analog signal can be negative or positive.

In addition, this module provides everything you need to make it very simple to use. To connect it to your Arduino you can use the I2C, so is really simple. It even includes a pin marked ADDR with which you can select one of the 4 addresses available for this component.

On the other hand, you have to understand that the ADS1115 has two measurement modes, one is the differential and the other the single ended:

  • Differential: it uses two ADCs for each measurement, reducing the number of channels to 2, but it brings a clear advantage, which is that it can measure negative voltages and is not as vulnerable to noise.
  • Single ended: it has four channels as it does not use both as in the previous case. Each of the channels is 15-bit.

Besides those modes, it includes a comparator mode in which an alert is generated through the ALRT pin when any of the channels exceeds a threshold value that can be configured in the source code of the sketch.

If you want to make measurements below 5v, but with higher accuracies, you should know that the ADS1115 has a PGA that can adjust the voltage gain from 6.144v to 0.256v. Always keeping in mind that the maximum voltage that can be measured in any case will be the supply voltage used (5v).

Pinout and datasheet

If you want to see all the technical details of the ADS1115 to know its limits at the electronic level or the conditions under which it can work according to the manufacturer’s recommendations, you can use the datasheets that you can find on the network. For example, you can download this from TI (Texas Instruments)

For the pinout and connection, previously I have already commented something about the ALRT signal that includes also about ADDR. But it has other pins that you must also know for a correct integration with your Arduino board or for any other case. The pins available in the ADS1115 module are:VDD: 2v to 5.5v power supply. You can power it by connecting it to 5v from your Arduino board.

  • GND: ground that you can connect to GND of your Arduino board.
  • SCL and SDA: communication pins for the I2C. In this case they should go to the appropriate pins according to your Arduino model.
  • ADDR: steering pin. By default it is connected to GND, which results in the address 0x48, but you can choose other addresses:
    • Connected to GND = 0x48
    • Connected to VDD = 0x49
    • Connected to SDA = 0x4A
    • Connected to SCL = 0x4B
  • ALRT: alert pin
  • A0 to A3: analog pins

If you want to use single end you can connect the analog current or voltage you want to measure between GND and one of the 4 analog pins available.
Arduino diagram ADS1115

As an example of connection in the case of a differential reading mode, you can see the previous image. In it, batteries of 1.5 are used in series, adding 3v that are connected between A0 and A1 in this case so that the Arduino board can measure through the I2C the values obtained of voltage in each moment. Obviously, you can use any other signal to measure, in this case it is a battery, but it can be whatever you want…

Where to buy the ADS1115?

ADS1115 módulo

If you want to buy the ADS1115, you should know that you have modules ready to integrate with Arduino for quite cheap prices. You can find them in many electronics stores, as well as on eBay, Aliexpress and Amazon. For example:

Integration with Arduino

Screenshot of Arduino IDE

To start, first install the corresponding library in your Arduino IDE. To do this, you can use the most famous one, Adafruit. To do this, you can follow these steps:

  1. Open Arduino IDE
  2. Go to the Sketch menu
  3. Then to Include Library
  4. Manage libraries
  5. In the search engine you can search Adafruit ADS1X15
  6. Click on Install

Now you are ready to start, you can access the code of the installed library or the examples available at

  1. Open Arduino IDE
  2. Go to Archive
  3. Examples
  4. And in the list look for those of this library…

Among the examples you will see both for the comparator mode, differential mode and single end mode. You can see the examples to start using them and modify them according to your needs or write more complex code. For more information, I recommend our free introduction course in PDF.