hw

Dependencies:   mbed LPS22HB LSM6DSL LSM303AGR HTS221

Revision:
0:9c859fc3ee1a
Child:
2:efaeb347f9c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Apr 23 07:44:49 2020 +0000
@@ -0,0 +1,62 @@
+
+#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();
+    }
+}