Arduino driver for the ST LPS28DFW and LPS27HHTW pressure sensors.
The LPS28DFW series are high-performance digital barometric pressure sensors with integrated temperature sensing. These sensors support I²C communication and are ideal for applications such as:
- Altitude measurement
- Weather monitoring
- Drones
- Industrial sensing
This library provides a clean and efficient interface for:
- Pressure (hPa) reading
- Temperature (°C) reading
- Advanced features like FIFO, interrupts, and calibration (offset/OPC)
- Pressure measurement (hPa)
- Temperature measurement (°C)
- Support for LPS28DFW and LPS27HHTW
- Automatic sensor detection
- Raw and scaled data reading
- FIFO support (buffered pressure data)
- Interrupt configuration (threshold, DRDY, FIFO)
- Pressure threshold configuration
- Low-pass filter (LPF)
- Block Data Update (BDU)
- One-shot and continuous modes
- ESP32 compatible
- Arduino UNO / Mega
- ESP32
- Any board supporting Wire (I²C)
7Semi Pressure Sensor Breakouts:
- LPS28DFW
- LPS27HHTW
The sensors use I²C communication.
| Sensor Pin | MCU Pin | Description |
|---|---|---|
| VCC | 3.3V | Sensor power |
| GND | GND | Ground |
| SDA | SDA | I²C data |
| SCL | SCL | I²C clock |
- Default address:
0x5D - Recommended speed:
100kHz – 400kHz
- Open Arduino IDE
- Go to Library Manager
- Search for
7Semi LPS28DFW - Click Install
- Download repository as ZIP
- Go to Sketch → Include Library → Add .ZIP Library
#include <7Semi_LPS28DFW.h>
LPS28DFW_7Semi sensor;
void setup()
{
Serial.begin(115200);
if(!sensor.begin(0x5D))
{
Serial.println("Sensor not detected");
while(1);
}
}
void loop()
{
float pressure, temperature;
if(sensor.readPressure(pressure))
{
Serial.print("Pressure: ");
Serial.print(pressure);
Serial.println(" hPa");
}
if(sensor.readTemperature(temperature))
{
Serial.print("Temp: ");
Serial.print(temperature);
Serial.println(" °C");
}
delay(500);
}float pressure;
sensor.readPressure(pressure);Returns pressure in hPa.
float temp;
sensor.readTemperature(temp);Returns temperature in °C.
int32_t raw;
sensor.readPressureRaw(raw);Returns raw pressure data.
sensor.setODR(LPS28DFW_ODR::HZ_25);sensor.setAveraging(LPS28DFW_AVG::AVG_32);sensor.setLPF(true);sensor.setBDU(true);sensor.setFifoConfig(true, FIFO_CONTINUOUS);
sensor.setFifoWatermark(50);float pressure;
sensor.getFifoData(pressure);sensor.setInterrupt(true, false, true);
sensor.setInterruptPin(true, false, true);sensor.setPressureThreshold(1013.25);- Altitude measurement
- Weather stations
- Drones and UAVs
- Indoor navigation
- Industrial pressure monitoring
- IoT environmental sensing