NTUES lab 2 sensor_shield
Dependencies: mbed X_NUCLEO_IKS01A2
main.cpp
- Committer:
- whz861025
- Date:
- 2019-05-14
- Revision:
- 0:aa329ecdcc9b
File content as of revision 0:aa329ecdcc9b:
/* Includes */ #include "mbed.h" #include "XNucleoIKS01A2.h" // create a DigitalOut objects for the LED DigitalOut led(LED1); /* Instantiate the expansion board */ static XNucleoIKS01A2 *sensor = XNucleoIKS01A2::instance(D14, D15, D4, D5); // 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; /* create a serial objects to communicate via USB */ Serial pc(USBTX, USBRX); volatile float TEMPERATURE_C; volatile float TEMPERATURE_F; volatile float TEMPERATURE_K; volatile float HUMIDITY; volatile float PRESSURE; bool measurement_update = false; void blinky_handler() { led = !led; } void sensor_handler() { measurement_update = true; } int main() { /* Attach a function to be called by the Ticker objects at a specific interval in seconds*/ blinky.attach(&blinky_handler, 0.5); update.attach(&sensor_handler, 3); while(1){ if (measurement_update == true){ /* read the enviornmental data from sensors */ sensor->ht_sensor->get_temperature((float *)&TEMPERATURE_C); sensor->ht_sensor->get_humidity((float *)&HUMIDITY); sensor->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"); measurement_update = false; } __wfi(); } }