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

Dependencies:   LIS3DSH mbed

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);
        }
    }
}