LIS2HH12 i2c address: 0x1D or 0x1E
Use 0x1D or 0x1E for the LIS2HH12 — not the 8-bit forms 0x3B or 0x3D. SA0/SDO selects the address; then the usual i2c wiring applies.
Key facts
LIS2HH12 at a glance
| i2c address | 0x1D0x1E address-selectable via pins/jumpers |
|---|---|
| Logic voltage | 1.71–3.6 V |
| Type | sensor |
| Part | ST LIS2HH12 |
| Ships with | generic modules — plain 0.1″ headers, no connector system |
The chip
What the ST LIS2HH12 actually is
Three-axis digital MEMS linear accelerometer with 16-bit resolution, selectable ±2/±4/±8 g full scale, a FIFO buffer and configurable interrupt engines for wake-up, free-fall and 6D/4D orientation. Runs from 1.71–3.6 V over i2c or SPI — a low-power design-in part rather than a plug-together breakout staple.
Watch out: The address trips up almost everyone. The 7-bit i2c address is 0x1D or 0x1E, chosen by the SA0/SDO pin. But ST's datasheet and some libraries quote the 8-bit form — 0x3B and 0x3D — which is double the 7-bit value plus the read/write bit, so people try 0x3D, or misread it as 0x1C or 0x19, and get a NACK. Use 0x1D/0x1E with i2cdetect and the Arduino Wire library. It's also 3.3 V-only (1.71–3.6 V), so a 5 V host needs a level shifter.
Wiring
How to connect the LIS2HH12
The LIS2HH12 talks i2c at address 0x1D (up to 2 selectable addresses, handy when you need more than one on the same bus). It runs at 1.71–3.6 V, so match your host's logic level — if your host is 5 V and a board on the bus is 3.3 V-only, add a level shifter. Use the compatibility checker to confirm the exact cable for your setup.
Because the address is selectable, you can run several LIS2HH12 boards on one bus by setting each to a different address — no extra wiring beyond the shared SDA/SCL.
Wiring is the usual four: power, ground, SDA and SCL, plus pull-up resistors — almost always already fitted on the breakout. Nothing showing up? Run an i2c scanner first; if the bus is silent, the 7-step checklist finds it faster than guessing.
Alternatives
Other motion boards
Watch the bus
Boards that clash with the LIS2HH12
These want addresses the LIS2HH12 also answers (0x1D, 0x1E), so they can't share a bus with it untouched. If one is address-selectable, strap it elsewhere; if not, the conflict guide covers the multiplexer and second-bus routes, and the collision roundup explains why a scan won't warn you.
Questions
LIS2HH12 i2c FAQ
What is the LIS2HH12's i2c address?
The LIS2HH12 uses 0x1D or 0x1E, selected with an address pin or solder jumper on the board. If a scan turns up something unexpected, our i2c address list names the usual suspect for every address.
What voltage does the LIS2HH12 run at?
1.71–3.6 V logic. It's 1.71 V-only — driving it straight from a 5 V Arduino risks damage, so level-shift first.
Can I use two LIS2HH12s on one i2c bus?
Yes — set each one to a different address (0x1D, 0x1E) using its address pin or jumper, then wire both to the same SDA/SCL. That gives you up to 2 on a single bus before you need a multiplexer.
Does the LIS2HH12 come as a plug-together breakout?
Not in the mainstream connector ecosystems — LIS2HH12 modules are generic boards with 0.1″ headers, so you'll be soldering headers and running jumper wires to SDA, SCL, power and ground.
What should I watch out for with the LIS2HH12?
The address trips up almost everyone. The 7-bit i2c address is 0x1D or 0x1E, chosen by the SA0/SDO pin. But ST's datasheet and some libraries quote the 8-bit form — 0x3B and 0x3D — which is double the 7-bit value plus the read/write bit, so people try 0x3D, or misread it as 0x1C or 0x19, and get a NACK. Use 0x1D/0x1E with i2cdetect and the Arduino Wire library. It's also 3.3 V-only (1.71–3.6 V), so a 5 V host needs a level shifter.
Why do some LIS2HH12 examples use 0x3B or 0x3D?
Those are 8-bit wire forms. Scanners, Arduino Wire and Linux libraries use the 7-bit address: 0x1D when SA0/SDO is low, or 0x1E when it is high. Use 0x1D or 0x1E in software; 0x3B and 0x3D are not separate i2c addresses.