https://github.com/tech02-7semi/7semi-lis3dh-3-axis-accelerometer
7Semi LIS3DH is an Arduino-compatible library for the STMicroelectronics LIS3DH 3-axis accelerometer. It supports I2C and SPI modes, raw and g-unit acceleration output, INT1/INT2 threshold interrupts, ADC channel reads, and internal temperature output.
https://github.com/tech02-7semi/7semi-lis3dh-3-axis-accelerometer
7semi accelerometer adc arduino embedded i2c lis3dh sensors spi temperature
Last synced: 2 months ago
JSON representation
7Semi LIS3DH is an Arduino-compatible library for the STMicroelectronics LIS3DH 3-axis accelerometer. It supports I2C and SPI modes, raw and g-unit acceleration output, INT1/INT2 threshold interrupts, ADC channel reads, and internal temperature output.
- Host: GitHub
- URL: https://github.com/tech02-7semi/7semi-lis3dh-3-axis-accelerometer
- Owner: Tech02-7semi
- License: mit
- Created: 2026-01-10T06:45:22.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-10T06:53:45.000Z (5 months ago)
- Last Synced: 2026-01-11T01:57:01.879Z (5 months ago)
- Topics: 7semi, accelerometer, adc, arduino, embedded, i2c, lis3dh, sensors, spi, temperature
- Language: C++
- Homepage: https://evelta.com/evelta-lis3dh-triple-axis-mems-accelerometer-breakout-i2c-spi
- Size: 20.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 7Semi LIS3DH Library
Arduino library for the **LIS3DH 3-axis accelerometer** (STMicroelectronics).
This library supports both **I2C and SPI** communication and makes it easy to read:
- Acceleration values (raw and g-units)
- Threshold interrupts (INT1 and INT2)
- ADC channel readings (ADC1 / ADC2 / ADC3)
- Temperature output from internal sensor
The goal of this library is to keep **setup simple**, while still giving access to advanced LIS3DH features.
---
## Why use LIS3DH?
LIS3DH is a popular accelerometer used in many applications:
- Motion detection
- Step counting
- Tilt / orientation sensing
- Fall detection
- Vibration monitoring
- Wearables and fitness devices
- Industrial motion monitoring
It supports:
- Very low power mode
- High resolution mode
- Interrupt based detection (no polling needed)
---
## Features
- **I2C + SPI communication**
- **Acceleration output**
- Raw signed 16-bit values
- Converted into g-units (float)
- **Sensor configuration**
- Scale selection (±2g / ±4g / ±8g / ±16g)
- Output Data Rate selection (1 Hz to 1.6 kHz)
- **Interrupt support**
- INT1 threshold interrupts
- INT2 threshold interrupts
- Polarity control (active high / low)
- **ADC + Temperature**
- 3 ADC channels available
- Temperature output via ADC3
---
## Supported Boards
- Arduino UNO / Mega / Nano
- ESP32 / ESP8266
- Any Arduino-compatible board with I2C or SPI
---
## Communication Modes
The sensor supports both I2C and SPI.
### I2C Mode
- Uses only **2 wires** (SDA + SCL)
- Slower than SPI, but simple
- Default address: `0x18`
- Alternate address: `0x19` (depends on SA0 pin)
### SPI Mode
- Uses **4 wires + CS**
- Faster reads, best for higher performance applications
- Requires manual CS pin control
- SPI mode is fixed to `SPI_MODE3` for LIS3DH
---
## Wiring
### I2C Wiring
| LIS3DH Pin | Arduino Pin |
|----------:|------------:|
| VCC | 3.3V / 5V |
| GND | GND |
| SDA | SDA |
| SCL | SCL |
> If using a 5V board (UNO), confirm that your module has level shifting or supports 5V logic.
---
### SPI Wiring
| LIS3DH Pin | Arduino Pin |
|----------:|------------:|
| VCC | 3.3V / 5V |
| GND | GND |
| SCL | SCK |
| SDO | MOSI |
| SDI | MISO |
| CS | Any GPIO |
---
### Interrupt Wiring (Optional)
| LIS3DH Pin | Arduino Pin |
|----------:|------------:|
| INT1 | D2 (example)|
| INT2 | D3 (example)|
INT pins are useful for:
- Motion detection
- Wake-up events
- Threshold triggers
- Free-fall events (can be implemented using interrupts)
---
## Installation
### Arduino Library Manager
1. Arduino IDE → **Tools → Manage Libraries**
2. Search: **7Semi LIS3DH**
3. Click install
### Manual Install
1. Download repository ZIP
2. Arduino IDE → **Sketch → Include Library → Add .ZIP Library**
3. Restart IDE
---
## Basic Usage Flow
Most users follow this pattern:
1. **Initialize** (I2C or SPI)
2. **Configure scale and data rate**
3. **Read acceleration**
4. Optional: use interrupts for event detection
5. Optional: read ADC and temperature
---