-blinking LEDs using push button -motion sensor detection and printing to uart

Dependencies:   LIS3DSH mbed

Revision:
0:dc6b1f4adb5a
Child:
1:3cded0feb65d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Jun 17 08:27:19 2018 +0000
@@ -0,0 +1,61 @@
+#include "mbed.h"
+#include "LIS3DSH.h"
+
+DigitalOut myledG(PD_12);
+DigitalOut myledO(PD_13);
+DigitalOut myledR(PD_14);
+DigitalOut myledB(PD_15);
+InterruptIn button(PA_0);
+Serial uart(PC_6,PC_7);
+ LIS3DSH acc(PA_7, PA_6, PA_5, PE_3);
+ 
+char buttondetect = 0;
+void buttonIsr()
+{
+    buttondetect = 1;
+    }
+int main() {
+   uart.baud(9600);
+  
+   button.fall(&buttonIsr); 
+   
+   int16_t X, Y, Z;    //signed integer variables for raw X,Y,Z values
+    float roll, pitch;  //float variables for angles
+    
+    if(acc.Detect() != 1) {
+        uart.printf("LIS3DSH Acceleromoter not detected!\n");
+        while(1){ };
+    }
+    while(1) {
+        wait(0.5);
+         static char counter = 0;
+   acc.ReadData(&X, &Y, &Z);           //read X, Y, Z values
+        acc.ReadAngles(&roll, &pitch);      //read roll and pitch angles
+        uart.printf("X: %d  Y: %d  Z: %d\n", X, Y, Z);
+        uart.printf("Roll: %f   Pitch: %f\n", roll, pitch);
+   
+        if(buttondetect){
+            buttondetect = 0;
+        switch(counter){
+            case 0:
+            myledG = !myledG;
+             break;
+             case 1:
+             myledO = !myledO;
+             break;
+             case 2:
+             myledR = !myledR;
+             break;
+             case 3:
+             myledB = !myledB;
+             break;
+         }   
+         
+             counter++;
+             if(counter >= 4)
+             counter =0;
+             
+      //  wait(0.5);
+        }
+    }
+}