Read board sensors (temperature, humidity, pressure, gyroscope, accelerometer, magnetometer) using ST BSP drivers. This example is superceded with the HelloWorld_ST_Sensors example.

Dependencies:   BSP_B-L475E-IOT01

Information

This example is superceded with the HelloWorld_ST_Sensors example.

Import programHelloWorld_ST_Sensors

Simple application to test ST motion and environmental MEMS sensors. Supports NUCLEO+X-NUCLEO-IKS01A2 , STEVAL-STLKT01V1 (a.k.a. SensorTile) and B-L475E-IOT01A boards.

main.cpp

Committer:
bcostm
Date:
2017-04-14
Revision:
7:cccef81dc691
Parent:
6:ff641476ffe3
Child:
10:0964ad447861

File content as of revision 7:cccef81dc691:

#include "mbed.h"
#include "stm32l475e_iot01_tsensor.h"
#include "stm32l475e_iot01_hsensor.h"
#include "stm32l475e_iot01_psensor.h"
#include "stm32l475e_iot01_magneto.h"
#include "stm32l475e_iot01_gyro.h"
#include "stm32l475e_iot01_accelero.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);
// This object drives both LD3 and LD4 on the board.
// Only one of these LEDs can be driven at a time.
DigitalInOut led3(LED3);

#define LD1_ON     {led1 = 1;}
#define LD1_OFF    {led1 = 0;}
#define LD1_TOG    {led1 = !led1;}
#define LD2_ON     {led2 = 1;}
#define LD2_OFF    {led2 = 0;}
#define LD2_TOG    {led2 = !led2;}
#define LD3_ON     {led3.output(); led3 = 1;}
#define LD3_OFF    {led3.input();}
#define LD4_ON     {led3.output(); led3 = 0;}
#define LD4_OFF    {led3.input();}

// Select your demo
//#define DEMO_TEMPERATURE_HUMIDITY_PRESSURE
#define DEMO_MAGNETO_GYRO_ACCELERO

int main()
{

#if defined(DEMO_TEMPERATURE_HUMIDITY_PRESSURE)
    float sensor_value = 0;
    BSP_TSENSOR_Init();
    BSP_HSENSOR_Init();
    BSP_PSENSOR_Init();
    while(1) {
        sensor_value = BSP_TSENSOR_ReadTemp();
        printf("\nTEMPERATURE = %.2f degC\n", sensor_value);
        sensor_value = BSP_HSENSOR_ReadHumidity();
        printf("HUMIDITY    = %.2f %\n", sensor_value);
        sensor_value = BSP_PSENSOR_ReadPressure();
        printf("PRESSURE is = %.2f mBar\n", sensor_value);
        led1 = !led1;
        wait(2);
    }
#elif defined(DEMO_MAGNETO_GYRO_ACCELERO)
    int16_t pDataXYZ[3] = {0};
    float pGyroDataXYZ[3] = {0};
    BSP_MAGNETO_Init();
    BSP_GYRO_Init();
    BSP_ACCELERO_Init();
    while(1) {
        BSP_MAGNETO_GetXYZ(pDataXYZ);
        printf("\nMAGNETO_X = %d\n", pDataXYZ[0]);
        printf("MAGNETO_Y = %d\n", pDataXYZ[1]);
        printf("MAGNETO_Z = %d\n", pDataXYZ[2]);
        led1 = !led1;
        wait(2);
        BSP_GYRO_GetXYZ(pGyroDataXYZ);
        printf("\nGYRO_X = %.2f\n", pGyroDataXYZ[0]);
        printf("GYRO_Y = %.2f\n", pGyroDataXYZ[1]);
        printf("GYRO_Z = %.2f\n", pGyroDataXYZ[2]);
        led1 = !led1;
        wait(2);
        BSP_ACCELERO_AccGetXYZ(pDataXYZ);
        printf("\nACCELERO_X = %d\n", pDataXYZ[0]);
        printf("ACCELERO_Y = %d\n", pDataXYZ[1]);
        printf("ACCELERO_Z = %d\n", pDataXYZ[2]);
        led1 = !led1;
        wait(2);
    }
#else
    while(1) {
        LD1_ON;
        wait(0.5);
        LD2_ON;
        wait(0.5);
        LD3_ON;
        wait(0.5);
        LD4_ON;
        wait(0.5);
        LD1_OFF;
        wait(0.5);
        LD2_OFF;
        wait(0.5);
        LD3_OFF; // LD4 is also OFF
        wait(0.5);
        for(int i = 0; i < 10; i++) {
            LD1_TOG;
            LD2_TOG;
            wait(0.2);
        }
    }
#endif
}