Volt Docs

Reference

ADS1115

16-bit 4-channel ADC.

Connects over
I²C
Address
0x48 (or 0x49, 0x4A, 0x4B)
Made by
Texas Instruments
Datasheet
ti.com

Use it

main.volt
hardware {
    device ads1115: ADS1115
}

every 1s {
    let value: int = ads1115.read_raw(1)
    log("ads1115", "read_raw={value}")
}

On its own, the declaration puts the ADS1115 on the first I²C bus (SDA 21, SCL 22 on the ESP32) at 0x48. To choose the pins or the address, declare the bus and attach the device: device ads1115: ADS1115 on i2c0 at 0x49 with i2c i2c0(sda: 21, scl: 22).

Methods

  • ads1115.read_raw(channel: int) -> int

    Raw ADC value

  • ads1115.voltage(channel: int) -> float

    Voltage in V

Wiring

PinConnect to
VCC3.3V or 5V
GNDGround
SDAPull-up to VCC (often on breakout board)
SCLPull-up to VCC
ADDRSelects address 0x48 (GND) / 0x49 (VCC) / 0x4A (SDA) / 0x4B (SCL)
ALERTOptional threshold-comparator output

Specifications

Voltage
2.0V – 5.5V
Current
150 μA active, 0.5 μA standby
Channels
4 single-ended or 2 differential
Resolution
16-bit (15-bit single-ended)
Sample rate
8 to 860 SPS
Interface speed
I²C up to 3.4 MHz

Tips

  • Programmable gain amplifier (±0.256V to ±6.144V) — set range to match your signal, larger range loses resolution.
  • Datasheet caveat: max input voltage = VDD + 0.3V regardless of PGA setting.
  • Use single-shot mode to save power; continuous mode samples non-stop.

Alternatives worth knowing:

  • ADS1015: 12-bit version, cheaper, faster (3300 SPS) but coarser resolution.
  • MCP3008: SPI 10-bit 8-channel — choose if you need more channels and don't care about resolution.