Accelerometer ko shake karke led ka color change hotai

Dependencies:   MMA8451Q mbed

Fork of LAB22_AccLedShake by Akashlal Bathe

main.cpp

Committer:
akashlal
Date:
2016-07-03
Revision:
0:652d94a5c5ac
Child:
1:0c71a0a434be

File content as of revision 0:652d94a5c5ac:

#include "mbed.h" //Importing mbed header files
#include "MMA8451Q.h" //Importing libraries to get accelerometer values
#define MMA8451_I2C_ADDRESS (0x1d<<1) //Setting Accelerometer address
MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); //Initializing accelerometer pins and address
BusOut led(PTB18,PTB19,PTD1); //BusOut to control ON/OFF state of 3 LEDs
int main() 
{
    led=0x7; //Ensure all LEDs are off initially
    int i=0; //Counter to toggle light color
    int yvali; //Variable to get value of Y axis of accelerometer
    while(1) 
    {
        yvali = abs(acc.getAccY()*100); //Getting absolute value of Y axis acceleration
        if(yvali>30) //Initialize shake loop, once execution enters this loop, at least one LED change SHOULD BE visible
        {
            while(yvali>30) //Ensure that light change is not triggered during the duration of shake
            {
                if(yvali<30) //Checking if shaking has stopped
                {
                    wait(50); //delay to sample after 50ms
                    if(yvali<30) //Ensuring if shaking has stopped
                    {
                        if(i==0) //Turn on only red LED once every three light swithches
                        {
                            led=0x6;
                        }
                        else if(i==1) //Turn on only green LED once every three light swithches
                        {
                            led=0x5;
                        }
                        else if(i==2) //Turn on only blue LED once every three light swithches
                        {
                            led=0x3;
                        }
                        i++; //Increment counter
                        if(i==3) //Ensure counter always increments between 0 to 2
                        {
                            i=0;
                       }
                    }
                } //Exit when LED color is changed one time
            } //End of light change loop after shaking stops
        }
    } //Infinite loop to keep measuring Y axis acceleration
}