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

Software Preparation

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

DFR0918-SPI Result

Was this article helpful?

TOP