Example Code for Raspberry Pi - GPIO HAT SPI Validation
Last revision 2025/12/19
This example uses the acceleration sensor for demonstration.Displays the acceleration values of the x, y and z axes.
Hardware Preparation
- DFR0918 Raspberry Pi 4B GPIO Terminal Block HAT x 1
- SEN0405 Fermion: LIS2DW12 Triple Axis Accelerometer x 1
- DFR0619 Raspberry Pi 4 Model B x 1
Software Preparation
- Download Arduino IDE: Click to download Arduino IDE
- Download the DFRobot_LIS2DW12 Library: DFRobot_LIS2DW12 Library
- About how to install the library?
Wiring Diagram

| Shield | Pin name | Sensor | Pin name |
|---|---|---|---|
| Raspberry Pi 4B GPIO Terminal Block HAT | 3.3V | LIS2DW12 Triple Axis Accelerometer | VCC |
| Raspberry Pi 4B GPIO Terminal Block HAT | GND | LIS2DW12 Triple Axis Accelerometer | GND |
| Raspberry Pi 4B GPIO Terminal Block HAT | SCLK | LIS2DW12 Triple Axis Accelerometer | SCL |
| Raspberry Pi 4B GPIO Terminal Block HAT | MOSI | LIS2DW12 Triple Axis Accelerometer | SDA |
| Raspberry Pi 4B GPIO Terminal Block HAT | MISO | LIS2DW12 Triple Axis Accelerometer | SDO |
| Raspberry Pi 4B GPIO Terminal Block HAT | IO2 | LIS2DW12 Triple Axis Accelerometer | CS |
Sample Code
#include <DFRobot_LIS2DW12.h>
DFRobot_LIS2DW12_SPI acce(/*cs = */LIS2DW12_CS,&SPI);
//DFRobot_LIS2DW12_SPI acce(/*cs = */LIS2DW12_CS);
void setup(void){
Serial.begin(9600);
while(!acce.begin()){
Serial.println("Communication failed, check the connection and I2C address setting when using I2C communication.");
delay(1000);
}
Serial.print("chip id : ");
Serial.println(acce.getID(),HEX);
acce.softReset();
acce.continRefresh(true);
acce.setDataRate(DFRobot_LIS2DW12::eRate_50hz);
acce.setRange(DFRobot_LIS2DW12::e2_g);
acce.setFilterPath(DFRobot_LIS2DW12::eLPF);
acce.setFilterBandwidth(DFRobot_LIS2DW12::eRateDiv_4);
acce.setPowerMode(DFRobot_LIS2DW12::eContLowPwrLowNoise2_14bit);
Serial.print("Acceleration:\n");
delay(100);
}
void loop(void){
Serial.print("x: ");
Serial.print(acce.readAccX());
Serial.print(" mg \ty: ");
Serial.print(acce.readAccY());
Serial.print(" mg \tz: ");
Serial.print(acce.readAccZ());
Serial.println(" mg");
delay(300);
}
Result

Was this article helpful?
