![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
-blinking LEDs using push button -motion sensor detection and printing to uart
main.cpp
- Committer:
- rakeshravula
- Date:
- 2018-06-23
- Revision:
- 1:3cded0feb65d
- Parent:
- 0:dc6b1f4adb5a
File content as of revision 1:3cded0feb65d:
#include "mbed.h" #include "LIS3DSH.h" #include "USBSerial.h" DigitalOut myledG(PD_12); DigitalOut myledO(PD_13); DigitalOut myledR(PD_14); DigitalOut myledB(PD_15); InterruptIn button(PA_0); USBSerial 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(X > 0 && Y >0) { myledO = !myledO; myledB = 0; myledR = 0; myledG = 0; uart.printf("Yes...entered to Orange Roll: %f Pitch: %f\n", roll, pitch); } else if(X < 0 && Y < 0) { myledB = !myledB; myledG = 0; myledR = 0; myledO = 0; uart.printf("Yes..entered to blue Roll: %f Pitch: %f\n", roll, pitch); } else if(X < 0 && Y > 0) { myledG = !myledG; myledO = 0; myledR = 0; myledB = 0; uart.printf("Yes..entered to Green Roll: %f Pitch: %f\n", roll, pitch); } else if(X >0 && Y < 0) { myledR = !myledR; myledB = 0; myledO = 0; myledG = 0; uart.printf("Yes...entered to Red 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); } } }