Example code which shows how to get data from sensors on the Nucleo sensors board.

Dependencies:   Nucleo_Sensor_Shield mbed

Fork of Nucleo_Sensors_Demo_Old by Daniel Griffin

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "x_cube_mems.h"
00003 
00004 DigitalOut myled(LED1);
00005 Serial pc(SERIAL_TX, SERIAL_RX);
00006 volatile float TEMPERATURE_Value_C;
00007 volatile float TEMPERATURE_Value_F;
00008 volatile float HUMIDITY_Value;
00009 volatile float PRESSURE_Value;
00010 volatile AxesRaw_TypeDef MAG_Value;
00011 volatile AxesRaw_TypeDef ACC_Value;
00012 volatile AxesRaw_TypeDef GYR_Value;
00013 
00014 int main() {
00015     
00016     /* Create sensor board object */
00017     static X_CUBE_MEMS *mems_expansion_board = X_CUBE_MEMS::Instance();
00018         
00019     while(1) {
00020         myled = 1; // LED is ON
00021         wait(0.2); // 200 ms
00022         myled = 0; // LED is OFF
00023         wait(1.0); // 1 sec
00024         
00025         /* Get instantaneous data from all sensors */
00026         mems_expansion_board->hts221.GetTemperature((float *)&TEMPERATURE_Value_C);
00027         mems_expansion_board->hts221.GetHumidity((float *)&HUMIDITY_Value);
00028         mems_expansion_board->lps25h.GetPressure((float *)&PRESSURE_Value);
00029         mems_expansion_board->lis3mdl.GetAxes((AxesRaw_TypeDef *)&MAG_Value);
00030         mems_expansion_board->lsm6ds0.Acc_GetAxes((AxesRaw_TypeDef *)&ACC_Value);
00031         mems_expansion_board->lsm6ds0.Gyro_GetAxes((AxesRaw_TypeDef *)&GYR_Value);
00032         
00033         TEMPERATURE_Value_F = (TEMPERATURE_Value_C * 1.8f) + 32.0f;
00034         pc.printf("Temperature:\t\t %f C / %f F\r\n", TEMPERATURE_Value_C, TEMPERATURE_Value_F);
00035         pc.printf("Humidity:\t\t %f%%\r\n", HUMIDITY_Value);
00036         pc.printf("Pressure:\t\t %f hPa\r\n", PRESSURE_Value); 
00037         pc.printf("Magnetometer (mGauss):\t X: %d, Y: %d, Z: %d\r\n", MAG_Value.AXIS_X, MAG_Value.AXIS_Y, MAG_Value.AXIS_Z);
00038         pc.printf("Accelerometer (mg):\t X: %d, Y: %d, Z: %d\r\n", ACC_Value.AXIS_X, ACC_Value.AXIS_Y, ACC_Value.AXIS_Z);
00039         pc.printf("Gyroscope (mdps):\t X: %d, Y: %d, Z: %d\r\n", GYR_Value.AXIS_X, GYR_Value.AXIS_Y, GYR_Value.AXIS_Z);
00040         pc.printf("\r\n");
00041     }
00042 }