![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
hw
Dependencies: mbed LPS22HB LSM6DSL LSM303AGR HTS221
main.cpp
- Committer:
- b05901043
- Date:
- 2020-04-23
- Revision:
- 0:9c859fc3ee1a
- Child:
- 2:efaeb347f9c7
File content as of revision 0:9c859fc3ee1a:
#include "mbed.h" #include "XNucleoIKS01A2.h" /* Instantiate the expansion board */ // Create a DigitalOut objects for the LED DigitalOut led(LED1); // Create a Serial objects to communicate via USB Serial pc(USBTX, USBRX); // Create 2 Ticker objects for a recurring interrupts. One for blink a LED and the other one to update the sensor lectures periodicly. Ticker blinky; Ticker update; volatile float TEMPERATURE_C; volatile float TEMPERATURE_F; volatile float TEMPERATURE_K; volatile float HUMIDITY; volatile float PRESSURE; bool measurements_update = false; void blinky_handler(){ led = !led; } void sensors_handler(){ measurements_update = true; } int main() { /* Create a sensor shield object */ // static X_CUBE_MEMS *Sensors = X_CUBE_MEMS::Instance(); static XNucleoIKS01A2 *Sensors = XNucleoIKS01A2::instance(D14, D15, D4, D5); /* Attach a function to be called by the Ticker objects at a specific interval in seconds*/ blinky.attach(&blinky_handler, 0.5); update.attach(&sensors_handler, 3); while(1) { if(measurements_update == true){ /* Read the environmental sensors */ Sensors->ht_sensor->get_temperature((float *)&TEMPERATURE_C); Sensors->ht_sensor->get_humidity((float *)&HUMIDITY); Sensors->pt_sensor->get_pressure((float *)&PRESSURE); TEMPERATURE_F = (TEMPERATURE_C * 1.8f) + 32.0f; //Convert the temperature from Celsius to Fahrenheit TEMPERATURE_K = (TEMPERATURE_C + 273.15f); //Convert the temperature from Celsius to Kelvin pc.printf("Temperature:\t %.2f C / %.2f F / %.2f K\r\n", TEMPERATURE_C, TEMPERATURE_F, TEMPERATURE_K); pc.printf("Humidity:\t %.2f%%\r\n", HUMIDITY); pc.printf("Pressure:\t %.2f hPa\r\n", PRESSURE); pc.printf("\r\n"); measurements_update = false; } __wfi(); } }