NTUES lab 2 sensor_shield
Dependencies: mbed X_NUCLEO_IKS01A2
main.cpp@0:aa329ecdcc9b, 2019-05-14 (annotated)
- Committer:
- whz861025
- Date:
- Tue May 14 13:01:48 2019 +0000
- Revision:
- 0:aa329ecdcc9b
sensor shield done
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
whz861025 | 0:aa329ecdcc9b | 1 | /* Includes */ |
whz861025 | 0:aa329ecdcc9b | 2 | #include "mbed.h" |
whz861025 | 0:aa329ecdcc9b | 3 | #include "XNucleoIKS01A2.h" |
whz861025 | 0:aa329ecdcc9b | 4 | |
whz861025 | 0:aa329ecdcc9b | 5 | // create a DigitalOut objects for the LED |
whz861025 | 0:aa329ecdcc9b | 6 | DigitalOut led(LED1); |
whz861025 | 0:aa329ecdcc9b | 7 | |
whz861025 | 0:aa329ecdcc9b | 8 | /* Instantiate the expansion board */ |
whz861025 | 0:aa329ecdcc9b | 9 | static XNucleoIKS01A2 *sensor = XNucleoIKS01A2::instance(D14, D15, D4, D5); |
whz861025 | 0:aa329ecdcc9b | 10 | |
whz861025 | 0:aa329ecdcc9b | 11 | |
whz861025 | 0:aa329ecdcc9b | 12 | // Create 2 Ticker objects for a recurring interrupts. One for blink a LED and the other one to update the sensor lectures periodicly. |
whz861025 | 0:aa329ecdcc9b | 13 | Ticker blinky; |
whz861025 | 0:aa329ecdcc9b | 14 | Ticker update; |
whz861025 | 0:aa329ecdcc9b | 15 | |
whz861025 | 0:aa329ecdcc9b | 16 | /* create a serial objects to communicate via USB */ |
whz861025 | 0:aa329ecdcc9b | 17 | Serial pc(USBTX, USBRX); |
whz861025 | 0:aa329ecdcc9b | 18 | |
whz861025 | 0:aa329ecdcc9b | 19 | volatile float TEMPERATURE_C; |
whz861025 | 0:aa329ecdcc9b | 20 | volatile float TEMPERATURE_F; |
whz861025 | 0:aa329ecdcc9b | 21 | volatile float TEMPERATURE_K; |
whz861025 | 0:aa329ecdcc9b | 22 | volatile float HUMIDITY; |
whz861025 | 0:aa329ecdcc9b | 23 | volatile float PRESSURE; |
whz861025 | 0:aa329ecdcc9b | 24 | |
whz861025 | 0:aa329ecdcc9b | 25 | bool measurement_update = false; |
whz861025 | 0:aa329ecdcc9b | 26 | |
whz861025 | 0:aa329ecdcc9b | 27 | void blinky_handler() |
whz861025 | 0:aa329ecdcc9b | 28 | { |
whz861025 | 0:aa329ecdcc9b | 29 | led = !led; |
whz861025 | 0:aa329ecdcc9b | 30 | } |
whz861025 | 0:aa329ecdcc9b | 31 | |
whz861025 | 0:aa329ecdcc9b | 32 | void sensor_handler() |
whz861025 | 0:aa329ecdcc9b | 33 | { |
whz861025 | 0:aa329ecdcc9b | 34 | measurement_update = true; |
whz861025 | 0:aa329ecdcc9b | 35 | } |
whz861025 | 0:aa329ecdcc9b | 36 | |
whz861025 | 0:aa329ecdcc9b | 37 | int main() |
whz861025 | 0:aa329ecdcc9b | 38 | { |
whz861025 | 0:aa329ecdcc9b | 39 | /* Attach a function to be called by the Ticker objects at a specific interval in seconds*/ |
whz861025 | 0:aa329ecdcc9b | 40 | blinky.attach(&blinky_handler, 0.5); |
whz861025 | 0:aa329ecdcc9b | 41 | update.attach(&sensor_handler, 3); |
whz861025 | 0:aa329ecdcc9b | 42 | |
whz861025 | 0:aa329ecdcc9b | 43 | while(1){ |
whz861025 | 0:aa329ecdcc9b | 44 | if (measurement_update == true){ |
whz861025 | 0:aa329ecdcc9b | 45 | /* read the enviornmental data from sensors */ |
whz861025 | 0:aa329ecdcc9b | 46 | sensor->ht_sensor->get_temperature((float *)&TEMPERATURE_C); |
whz861025 | 0:aa329ecdcc9b | 47 | sensor->ht_sensor->get_humidity((float *)&HUMIDITY); |
whz861025 | 0:aa329ecdcc9b | 48 | sensor->pt_sensor->get_pressure((float *)&PRESSURE); |
whz861025 | 0:aa329ecdcc9b | 49 | |
whz861025 | 0:aa329ecdcc9b | 50 | TEMPERATURE_F = (TEMPERATURE_C * 1.8f) + 32.0f; //Convert the temperature from Celsius to Fahrenheit |
whz861025 | 0:aa329ecdcc9b | 51 | TEMPERATURE_K = (TEMPERATURE_C + 273.15f); //Convert the temperature from Celsius to Kelvin |
whz861025 | 0:aa329ecdcc9b | 52 | pc.printf("Temperature:\t %.2f C / %.2f F / %.2f K\r\n", TEMPERATURE_C, TEMPERATURE_F, TEMPERATURE_K); |
whz861025 | 0:aa329ecdcc9b | 53 | pc.printf("Humidity:\t %.2f%%\r\n", HUMIDITY); |
whz861025 | 0:aa329ecdcc9b | 54 | pc.printf("Pressure:\t %.2f hPa\r\n", PRESSURE); |
whz861025 | 0:aa329ecdcc9b | 55 | pc.printf("\r\n"); |
whz861025 | 0:aa329ecdcc9b | 56 | measurement_update = false; |
whz861025 | 0:aa329ecdcc9b | 57 | } |
whz861025 | 0:aa329ecdcc9b | 58 | __wfi(); |
whz861025 | 0:aa329ecdcc9b | 59 | } |
whz861025 | 0:aa329ecdcc9b | 60 | } |