Control remoto universal con gestos

Dependencies:   RemoteIR X_NUCLEO_IKS01A2 mbed

Fork of 6DOrientation_IKS01A2 by ST

Revision:
13:446c314ac03f
Parent:
8:459b84a5287b
Child:
17:fb403a9b13ae
--- a/main.cpp	Fri Dec 16 10:03:54 2016 +0000
+++ b/main.cpp	Tue Mar 14 13:42:53 2017 +0100
@@ -38,10 +38,10 @@
 
 /* Includes */
 #include "mbed.h"
-#include "x_nucleo_iks01a2.h"
+#include "XNucleoIKS01A2.h"
 
 /* Instantiate the expansion board */
-static X_NUCLEO_IKS01A2 *mems_expansion_board = X_NUCLEO_IKS01A2::Instance(D14, D15, D4, D5);
+static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
 
 /* Retrieve the composing elements of the expansion board */
 static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro;
@@ -52,21 +52,103 @@
 volatile int mems_event = 0;
 volatile int send_orientation_request = 0;
 
-void pressed_cb();
-void INT1_cb();
-void sendOrientation();
+/* User button callback. */
+void pressed_cb() {
+  send_orientation_request = 1;
+}
+
+/* Interrupt 1 callback. */
+void int1_cb() {
+  mems_event = 1;
+}
+
+/* Print the orientation. */
+void send_orientation() {
+  uint8_t xl = 0;
+  uint8_t xh = 0;
+  uint8_t yl = 0;
+  uint8_t yh = 0;
+  uint8_t zl = 0;
+  uint8_t zh = 0;
+  
+  acc_gyro->get_6d_orientation_xl(&xl);
+  acc_gyro->get_6d_orientation_xh(&xh);
+  acc_gyro->get_6d_orientation_yl(&yl);
+  acc_gyro->get_6d_orientation_yh(&yh);
+  acc_gyro->get_6d_orientation_zl(&zl);
+  acc_gyro->get_6d_orientation_zh(&zh);
+  
+  if ( xl == 0 && yl == 0 && zl == 0 && xh == 0 && yh == 1 && zh == 0 ) {
+    printf( "\r\n  ________________  " \
+            "\r\n |                | " \
+            "\r\n |  *             | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |________________| \r\n" );
+  }
+
+  else if ( xl == 1 && yl == 0 && zl == 0 && xh == 0 && yh == 0 && zh == 0 ) {
+    printf( "\r\n  ________________  " \
+            "\r\n |                | " \
+            "\r\n |             *  | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |________________| \r\n" );
+  }
+  
+  else if ( xl == 0 && yl == 0 && zl == 0 && xh == 1 && yh == 0 && zh == 0 ) {
+    printf( "\r\n  ________________  " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |  *             | " \
+            "\r\n |________________| \r\n" );
+  }
+  
+  else if ( xl == 0 && yl == 1 && zl == 0 && xh == 0 && yh == 0 && zh == 0 ) {
+    printf( "\r\n  ________________  " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |                | " \
+            "\r\n |             *  | " \
+            "\r\n |________________| \r\n" );
+  }
+  
+  else if ( xl == 0 && yl == 0 && zl == 0 && xh == 0 && yh == 0 && zh == 1 ) {
+    printf( "\r\n  __*_____________  " \
+            "\r\n |________________| \r\n" );
+  }
+  
+  else if ( xl == 0 && yl == 0 && zl == 1 && xh == 0 && yh == 0 && zh == 0 ) {
+    printf( "\r\n  ________________  " \
+            "\r\n |________________| " \
+            "\r\n    *               \r\n" );
+  }
+  
+  else {
+    printf( "None of the 6D orientation axes is set in LSM6DSL - accelerometer.\r\n" );
+  }
+}
 
 /* Simple main function */
 int main() {
   /* Attach callback to User button press */
   mybutton.fall(&pressed_cb);
   /* Attach callback to LSM6DSL INT1 */
-  acc_gyro->AttachINT1IRQ(&INT1_cb);
+  acc_gyro->attach_int1_irq(&int1_cb);
 
   /* Enable LSM6DSL accelerometer */
-  acc_gyro->Enable_X();
+  acc_gyro->enable_x();
   /* Enable 6D Orientation. */
-  acc_gyro->Enable_6D_Orientation();
+  acc_gyro->enable_6d_orientation();
   
   printf("\r\n--- Starting new run ---\r\n");
  
@@ -74,10 +156,10 @@
     if (mems_event) {
       mems_event = 0;
       LSM6DSL_Event_Status_t status;
-      acc_gyro->Get_Event_Status(&status);
+      acc_gyro->get_event_status(&status);
       if (status.D6DOrientationStatus) {
         /* Send 6D Orientation */
-        sendOrientation();
+        send_orientation();
         
         /* Led blinking. */
         myled = 1;
@@ -88,97 +170,7 @@
 
     if(send_orientation_request) {
       send_orientation_request = 0;
-      sendOrientation();
+      send_orientation();
     }
   }
 }
-
-void pressed_cb() {
-  send_orientation_request = 1;
-}
-
-void INT1_cb() {
-  mems_event = 1;
-}
-
-void sendOrientation() {
-  uint8_t xl = 0;
-  uint8_t xh = 0;
-  uint8_t yl = 0;
-  uint8_t yh = 0;
-  uint8_t zl = 0;
-  uint8_t zh = 0;
-  
-  acc_gyro->Get_6D_Orientation_XL(&xl);
-  acc_gyro->Get_6D_Orientation_XH(&xh);
-  acc_gyro->Get_6D_Orientation_YL(&yl);
-  acc_gyro->Get_6D_Orientation_YH(&yh);
-  acc_gyro->Get_6D_Orientation_ZL(&zl);
-  acc_gyro->Get_6D_Orientation_ZH(&zh);
-  
-  if ( xl == 0 && yl == 0 && zl == 0 && xh == 0 && yh == 1 && zh == 0 )
-  {
-    printf( "\r\n  ________________  " \
-            "\r\n |                | " \
-            "\r\n |  *             | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |________________| \r\n" );
-  }
-  
-  else if ( xl == 1 && yl == 0 && zl == 0 && xh == 0 && yh == 0 && zh == 0 )
-  {
-    printf( "\r\n  ________________  " \
-            "\r\n |                | " \
-            "\r\n |             *  | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |________________| \r\n" );
-  }
-  
-  else if ( xl == 0 && yl == 0 && zl == 0 && xh == 1 && yh == 0 && zh == 0 )
-  {
-    printf( "\r\n  ________________  " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |  *             | " \
-            "\r\n |________________| \r\n" );
-  }
-  
-  else if ( xl == 0 && yl == 1 && zl == 0 && xh == 0 && yh == 0 && zh == 0 )
-  {
-    printf( "\r\n  ________________  " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |                | " \
-            "\r\n |             *  | " \
-            "\r\n |________________| \r\n" );
-  }
-  
-  else if ( xl == 0 && yl == 0 && zl == 0 && xh == 0 && yh == 0 && zh == 1 )
-  {
-    printf( "\r\n  __*_____________  " \
-            "\r\n |________________| \r\n" );
-  }
-  
-  else if ( xl == 0 && yl == 0 && zl == 1 && xh == 0 && yh == 0 && zh == 0 )
-  {
-    printf( "\r\n  ________________  " \
-            "\r\n |________________| " \
-            "\r\n    *               \r\n" );
-  }
-  
-  else
-  {
-    printf( "None of the 6D orientation axes is set in LSM6DSL - accelerometer.\r\n" );
-  }
-}