Simple "hello world" style program for X-NUCLEO-IKS01A1 MEMS Inertial

Dependencies:   GraphicsDisplay X_NUCLEO_IKS01A1 HelloWorld_IKS01A1 mbed-src mbed

Fork of HelloWorld_IKS01A1 by ST

Revision:
7:dc9ba99b1928
Parent:
4:b1526d074d83
--- a/main.cpp	Fri Sep 04 08:29:53 2015 +0000
+++ b/main.cpp	Wed May 18 20:27:38 2016 +0000
@@ -1,41 +1,3 @@
-/**
- ******************************************************************************
- * @file    main.cpp
- * @author  AST / EST
- * @version V0.0.1
- * @date    14-August-2015
- * @brief   Simple Example application for using the X_NUCLEO_IKS01A1 
- *          MEMS Inertial & Environmental Sensor Nucleo expansion board.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *   1. Redistributions of source code must retain the above copyright notice,
- *      this list of conditions and the following disclaimer.
- *   2. Redistributions in binary form must reproduce the above copyright notice,
- *      this list of conditions and the following disclaimer in the documentation
- *      and/or other materials provided with the distribution.
- *   3. Neither the name of STMicroelectronics nor the names of its contributors
- *      may be used to endorse or promote products derived from this software
- *      without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
-*/ 
-
 /* Includes */
 #include "mbed.h"
 #include "x_nucleo_iks01a1.h"
@@ -93,41 +55,100 @@
   float value1, value2;
   char buffer1[32], buffer2[32];
   int32_t axes[3];
-  
+  int32_t m[3];
+  int32_t n[3];
+  int32_t r;
+  int32_t i;
+  int32_t lock_unlock=0;
   printf("\r\n--- Starting new run ---\r\n");
 
   humidity_sensor->ReadID(&id);
   printf("HTS221  humidity & temperature    = 0x%X\r\n", id);
-  pressure_sensor->ReadID(&id);
-  printf("LPS25H  pressure & temperature    = 0x%X\r\n", id);
-  magnetometer->ReadID(&id);
-  printf("LIS3MDL magnetometer              = 0x%X\r\n", id);
+  //pressure_sensor->ReadID(&id);
+ // printf("LPS25H  pressure & temperature    = 0x%X\r\n", id);
+  //magnetometer->ReadID(&id);
+  //printf("LIS3MDL magnetometer              = 0x%X\r\n", id);
   gyroscope->ReadID(&id);
   printf("LSM6DS0 accelerometer & gyroscope = 0x%X\r\n", id);
   
+  DigitalOut myled(LED1);
+  DigitalIn mybutton(USER_BUTTON);
+  
   wait(3);
  
   while(1) {
+    wait(1);
     printf("\r\n");
-
-    temp_sensor1->GetTemperature(&value1);
+    
+    temp_sensor1->GetTemperature(&value1); 
     humidity_sensor->GetHumidity(&value2);
+    if ((value1>27) && (value2>70))
+        {
+           myled=1;
+           wait(1);
+           myled=0;
+           printf("Excessive Temperature & Excessive Humidity\r\n");
+        }
+    if ((value1>27) && (value2<=70))
+        {
+            myled=1;
+            wait(0.3);
+            myled=0;
+            printf("Excessive Temperature\r\n");
+        }
+    if ((value1<=27) && (value2>70))
+        {
+            myled=1;
+            wait(0.6);
+            myled=0;
+            printf("Excessive Humidity\r\n");
+        }
+    
+    
     printf("HTS221: [temp] %7s°C,   [hum] %s%%\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
-    
     temp_sensor2->GetFahrenheit(&value1);
-    pressure_sensor->GetPressure(&value2);
-    printf("LPS25H: [temp] %7s°F, [press] %smbar\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
+    //pressure_sensor->GetPressure(&value2);
+    //printf("LPS25H: [temp] %7s°F, [press] %smbar\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
 
-    printf("---\r\n");
-
-    magnetometer->Get_M_Axes(axes);
-    printf("LIS3MDL [mag/mgauss]:  %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
-
-    accelerometer->Get_X_Axes(axes);
-    printf("LSM6DS0 [acc/mg]:      %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
-
-    gyroscope->Get_G_Axes(axes);
-    printf("LSM6DS0 [gyro/mdps]:   %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
+    if(mybutton == 0)
+        {
+            lock_unlock =! lock_unlock;
+            myled=1;
+            wait(0.2);
+            myled=0;
+            wait(0.2);
+            myled=1;
+            wait(0.2);
+            myled=0;
+            }
+    
+    if (lock_unlock == 0)
+        {
+        printf("SecuritySystemON\r\n");
+        accelerometer->Get_X_Axes(axes);
+        for (i=0;i<3;i++)
+            {
+                m[i]=axes[i];
+            }
+        wait(0.2);
+        accelerometer->Get_X_Axes(axes);
+        for (i=0;i<3;i++)
+            {
+                n[i]=axes[i];
+            }
+        r=(m[0]-n[0])*(m[0]-n[0])+(m[1]-n[1])*(m[1]-n[1])+(m[2]-n[2])*(m[2]-n[2]);
+        if(r>70)
+            {
+                myled=1;
+                printf("Security Alert\r\n");
+            }
+        printf("LSM6DS0 [acc/mg]:%6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
+    }
+    if (lock_unlock != 0)
+        {
+            printf("UNLOCKED\r\n");
+            printf("SecuritySystemOFF\r\n");
+            }
 
     wait(1.5);
   }