Example Code for Arduino-Read Data from FIFO

Last revision 2025/12/18

Read data from the FIFO of the sensor to reduce power consumption. Users can learn how to configure FIFO and retrieve data from it.

Hardware Preparation

  • DFRduino UNO R3 (or similar) x 1
  • Fermion: LPS27HHW pressure sensor x 1
  • Jumper wires

Software Preparation

Wiring Diagram

Other Preparation Work

Ensure the sensor is powered with 3.3V; use a level conversion module for 5V main controls. Install the LPS27HHW library in Arduino IDE.

Sample Code

/*!
  * @file  getdatabyfifo.ino
  * @brief MCU get data in FIFO of the sensor and print them out by serial port.
  * @n     Experiment phenomena: The configuration of the sensor and the self-test information will be printed on the serial port.
  * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  * @licence     The MIT License (MIT)
  * @author      PengKaixing([email protected])
  * @version     V0.1
  * @date        2021-04-28
  * @get         from https://www.dfrobot.com
  * @url         https://github.com/dfrobot/DFRobot_LPS27HHW
  */
#include "DFRobot_LPS27HHW.h"

//Enable by default, use IIC communication at this time, use SPI communication after being shielded.
#define I2C_COMMUNICATION

#ifdef  I2C_COMMUNICATION
/*!
 * @brief When using I2C communication, use the following program to construct an object by DFRobot_LPS27HHW_I2C.
 * @param pWire I2C controller
 * @param I2C address
 *        LPS27HHW_I2C_ADD_L 0x5C  (SDO:0)
 *        LPS27HHW_I2C_ADD_H 0x5D  (SDO:1)
 */
#define I2C_ADDRESS    LPS27HHW_I2C_ADD_H
  DFRobot_LPS27HHW_I2C LPS27HHW(&Wire,I2C_ADDRESS);
/*!
 * @brief Constructor 
 * @param cs Chip selection pinChip selection pin
 *        spi connection method
 *        (SDO<-->MISO)    (SDI<-->MOSI)
 *        (SCK<-->SCK)     (CS<-->CS Customizable pin)
 */  
#else
/*!
 * @brief When using SPI communication, the pin value needs to be changed according to different MCU.
 * This value can be any digital IO port
 * LPS27HHW_CS : D3(ESP32)
 * LPS27HHW_CS : 10(UNO)
 */
#define LPS27HHW_CS D3
  DFRobot_LPS27HHW_SPI LPS27HHW(/*cs = */LPS27HHW_CS);
#endif

void setup() {
  Serial.begin(115200);
  while(1)
  {
    /**
     **Iniatialize the sensor, whether be used to initialize SPI or I2C is up to the current communication way.
     */    
    uint8_t status = LPS27HHW.begin();
    if(status == 0)
    {
      Serial.println("sensor inint success !");
      break;  
    }else
    {
      Serial.print("sensor inint ,error code is:");
      Serial.println(status);
      delay(1000);
    }
  }
  /**
    *Sensor software reset
    */
  while (LPS27HHW.setReset())
  {
    Serial.println("Unsuccessful reset!");
    delay(1000);
  }
  Serial.println("reset success!");

  /*!
   * @brief  Set the sensor to collect the pressure value at the frequency we set before
   *         Use LPS27HHW_75_Hz_LOW_NOISE by default
   * @param 
   *         LPS27HHW_POWER_DOWN
   *         LPS27HHW_1_Hz  
   *         LPS27HHW_10_Hz 
   *         LPS27HHW_25_Hz 
   *         LPS27HHW_50_Hz 
   *         LPS27HHW_75_Hz 
   *         LPS27HHW_100_Hz
   *         LPS27HHW_200_Hz 
   *         LPS27HHW_1_Hz_LOW_NOISE 
   *         LPS27HHW_10_Hz_LOW_NOISE
   *         LPS27HHW_25_Hz_LOW_NOISE
   *         LPS27HHW_50_Hz_LOW_NOISE
   *         LPS27HHW_75_Hz_LOW_NOISE
   */
  LPS27HHW.setDataRate();

  /*!
   * @brief  Configure MCU to get data in the FIFO of sensor.
   */
  LPS27HHW.cfgGainDataByFifo();
}

void loop() {
  float press = LPS27HHW.getFifoPressure_hPA();
  float temp = LPS27HHW.getFifoTemperature_C();
  float alti = LPS27HHW.calAltitude(press);

  Serial.println("===================");
  Serial.print("Pressure : ");
  Serial.print(press);
  Serial.println(" hPA");

  Serial.print("Temperature : ");
  Serial.print(temp);
  Serial.println(" ℃");

  Serial.print("Altitude : ");
  Serial.print(alti);
  Serial.println(" m");

  Serial.println("===================");
  Serial.println("");
  delay(1000);
}

Result

Additional Information

Using FIFO reduces power consumption by minimizing communication with the sensor.

Was this article helpful?

TOP