LIS3DH

An ST ultra-low-power 3-axis accelerometer breakout with ±2 g to ±16 g ranges, tap and free-fall interrupts and three auxiliary ADC inputs, read over I2C or SPI.

  • Chip supply1.71 V to 3.6 V (2.5 V typical)
  • Absolute maximum-0.3 V to 4.8 V on Vdd and Vdd_IO; control pins at most Vdd_IO + 0.3 V
  • Ranges and sensitivity±2, ±4, ±8, ±16 g; 1, 2, 4, 12 mg/digit
  • Output data rate1 Hz to 1.25 kHz normal, up to 5 kHz in low-power mode
LIS3DH, An ST ultra-low-power 3-axis accelerometer breakout with ±2 g to ±16 g ranges, tap and free-fall interrupts and three auxiliary ADC inputs, read over I2C or SPI.
In short

The LIS3DH is ST's low-power 3-axis accelerometer: ±2, ±4, ±8 or ±16 g, output rates from 1 Hz to 1.25 kHz (5 kHz in low-power mode), and as little as 2 µA at 1 Hz (ST LIS3DH datasheet Rev 1, pp. 1, 11, 30). It answers at I2C address 0x18 with SDO/SA0 low or 0x19 with it high (p. 21), and the chip runs from 1.71 V to 3.6 V (p. 11). The Adafruit breakout adds a 3.3 V regulator and level shifting, so VIN takes 3 V or 5 V.

The LIS3DH measures acceleration on three axes with dynamically selectable full scales of ±2 g to ±16 g, from 1 mg per digit at ±2 g to 12 mg per digit at ±16 g in high-resolution mode (ST datasheet Rev 1, pp. 1, 10). It survives 10,000 g of shock (p. 1).

Its built-in interrupt generators handle free fall, wake-up, 6D/4D orientation and single or double click, and a 32-level FIFO buffers samples so a microcontroller can sleep between bursts (pp. 1, 17). Current is 2 µA at 1 Hz and 11 µA at 50 Hz in normal mode, or 6 µA at 50 Hz in low-power mode (p. 11).

Unusually for an accelerometer it also has a 3-input 10-bit auxiliary ADC (p. 17), broken out as A1 to A3; Adafruit notes their valid range is only about 0.9 V to 1.8 V (guide, p. 22). The Adafruit breakout carries a 3.3 V regulator and level shifting with 10 kΩ pull-ups on SCL and SDA (guide, pp. 5, 7).

LIS3DH pinout

tinkered.ai/components/lis3dhLIS3DHVINPower3VoPowerGNDGroundSCLI2C SCL · SPI SCKSDAI2C SDA · SPI MOSISDOSPI MISO · I2C address selectCSSPI CSINTInterruptA1ADC
PinFunctionType
VINVin3 V to 5 V, equal to your board's logic levelpower in
3Vo3Vo3.3 Vpower out
GNDGNDpower in
SCLI2C SCL, SPI SCKLevel shifted, 10 kΩ pull-upinput
SDAI2C SDA, SPI MOSILevel shifted, 10 kΩ pull-upbidirectional
SDOSPI MISO, I2C address selectbidirectional
CSSPI CSinput
INTInterrupt3.3 Voutput
A1ADCAbout 0.9 V to 1.8 Vinput

How to wire the LIS3DH

Pin by pin, for the board you have.

LIS3DHArduino UnoNote
VIN5V
GNDGND
SCLA5
SDAA4
Design this circuit on an Arduino Uno

LIS3DH code

Every example here compiles for its board.

Libraries: adafruit/Adafruit LIS3DH, adafruit/Adafruit Unified Sensor
// LIS3DH on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/lis3dh
// LIS3DH on an Arduino Uno: VIN 5V, SDA A4, SCL A5, address 0x18
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LIS3DH.h>

Adafruit_LIS3DH lis(&Wire);

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!lis.begin(0x18)) {
    Serial.println("LIS3DH not found at 0x18. Check wiring and SDO.");
    while (true) delay(10);
  }
  lis.setRange(LIS3DH_RANGE_4_G);
  lis.setDataRate(LIS3DH_DATARATE_100_HZ);
  Serial.println("LIS3DH ready, +/-4 g at 100 Hz");
}

void loop() {
  sensors_event_t event;
  lis.getEvent(&event);  // m/s^2
  Serial.print("X: ");
  Serial.print(event.acceleration.x, 2);
  Serial.print("  Y: ");
  Serial.print(event.acceleration.y, 2);
  Serial.print("  Z: ");
  Serial.print(event.acceleration.z, 2);
  Serial.println("  m/s^2");
  delay(100);
}
Compiled for arduino:avr:uno on 2026-10-30

Before you wire it

Do
  • Set SDO for the address you want: open or GND for 0x18, 3.3 V for 0x19 (datasheet, p. 21; Adafruit guide, p. 8).
  • Pick the lowest data rate that captures the motion: current climbs from 2 µA at 1 Hz to 11 µA at 50 Hz (p. 11).
  • Keep A1 to A3 between about 0.9 V and 1.8 V if you use the auxiliary ADC (Adafruit guide, p. 22).
  • Mount the board firmly; any play adds false acceleration.
Don’t
  • Never exceed 4.8 V on any pin of a bare LIS3DH (p. 14).
  • Never drive the auxiliary ADC inputs with 3.3 V or 5 V signals expecting a full-scale reading; the usable window is narrow.
  • Never mix up 0x18 and 0x19 when copying code between boards with different SDO wiring.
  • The click detector can report single and double taps on INT, which makes a tap-to-wake control without any button.
  • Free-fall and wake-up interrupts let a battery device sleep until moved.
  • Tilt angles come from gravity: roll = atan2(y, z), pitch = atan2(-x, sqrt(y*y + z*z)) while the board is still.
  • The 32-sample FIFO lets the sensor collect a burst while the microcontroller sleeps (p. 17).

Specifications

Chip supply
1.71 V to 3.6 V (2.5 V typical)ST LIS3DH datasheet Doc ID 17530 Rev 1, p. 11
Absolute maximum
-0.3 V to 4.8 V on Vdd and Vdd_IO; control pins at most Vdd_IO + 0.3 VST LIS3DH datasheet Doc ID 17530 Rev 1, p. 14
Ranges and sensitivity
±2, ±4, ±8, ±16 g; 1, 2, 4, 12 mg/digitST LIS3DH datasheet Doc ID 17530 Rev 1, pp. 1, 10
Output data rate
1 Hz to 1.25 kHz normal, up to 5 kHz in low-power modeST LIS3DH datasheet Doc ID 17530 Rev 1, pp. 1, 30
Current
2 µA at 1 Hz, 11 µA at 50 Hz (normal); 6 µA at 50 Hz (low power)ST LIS3DH datasheet Doc ID 17530 Rev 1, p. 11
I2C address
0x18 (SDO/SA0 low) or 0x19 (high); WHO_AM_I reads 0x33ST LIS3DH datasheet Doc ID 17530 Rev 1, pp. 21, 26
Interfaces
I2C up to 400 kHz; SPI up to 10 MHzST LIS3DH datasheet Doc ID 17530 Rev 1, pp. 12 to 13, 20
Extras
32-level FIFO; 3-channel 10-bit auxiliary ADC; click, free-fall and 6D interruptsST LIS3DH datasheet Doc ID 17530 Rev 1, pp. 1, 17
Breakout
3.3 V regulator and level shifting; 10 kΩ pull-ups; 0x18 with SDO open or to GNDAdafruit LIS3DH guide (PDF), pp. 5, 7 to 8

From the LIS3DH product page and datasheet, published by STMicroelectronics.

Common mistakes

  1. begin() fails at 0x18

    SDO is high on your board, which moves the address to 0x19 (datasheet, p. 21). Call lis.begin(0x19) or tie SDO to GND.

  2. Expecting the ADC to read 0 to 3.3 V

    The auxiliary ADC's valid window is roughly 0.9 V to 1.8 V on the Adafruit board (guide, p. 22). Scale signals into that range first.

  3. Noisy readings in low-power mode

    Low-power mode drops to 8-bit output (p. 11). Use normal or high-resolution mode for precise tilt.

  4. Wrong board for 5 V

    Generic LIS3DH boards without a regulator and level shifter are 3.3 V only. Check before wiring one to an Uno's 5 V and A4/A5.

LIS3DH questions

What is the LIS3DH I2C address?

0x18 with SDO/SA0 low or open, 0x19 with it high (ST datasheet Rev 1, p. 21; Adafruit guide, p. 8). Its WHO_AM_I register reads 0x33 (p. 26).

LIS3DH or ADXL345?

Both are 3-axis, ±2 g to ±16 g accelerometers with tap and free-fall detection. The LIS3DH runs lower (2 µA at 1 Hz, p. 11), adds a FIFO and three ADC inputs; the ADXL345 has a fixed 4 mg/LSB full-resolution mode.

LIS3DH or MPU6050?

The MPU6050 adds a gyroscope for rotation tracking. For battery-powered motion detection and tilt, the LIS3DH draws far less.

Is the LIS3DH 5 V tolerant?

The chip is not: 1.71 V to 3.6 V supply and 4.8 V absolute maximum (pp. 11, 14). The Adafruit breakout's regulator and level shifting make it safe on 5 V boards (guide, p. 5).

How fast can it sample?

Up to 1.25 kHz in normal mode and 5 kHz in low-power mode (p. 30), enough for vibration analysis of small machines.

Build something with the LIS3DH

  • Tap-to-toggle lamp

    Double-tap the desk to switch a light.

    Build this
  • Bike crash detector

    Detect a fall and send an alert.

    Build this
  • Tilt maze game

    Roll a dot around an LED matrix by tilting the board.

    Build this
For AI assistants

This page as plain Markdown, for ChatGPT, Claude or your own agent. /components/lis3dh.md

What will you build with it?