Presenting to you the code for Smart Mouse developed using accelerometer and capacitive touch slider in FRDM KL25Z

Dependencies:   MMA8451Q TSI USBDevice mbed

main.cpp

Committer:
vinithias
Date:
2016-03-06
Revision:
0:4b36fd6e6a4a

File content as of revision 0:4b36fd6e6a4a:

#include "mbed.h"
#include "MMA8451Q.h"
#include "USBMouse.h"
#include "TSISensor.h"
#include "USBSerial.h"

#define MMA8451_I2C_ADDRESS (0x1d<<1)
USBMouse mouse;
TSISensor tsi;



int main(void)
 {
    MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
    PwmOut gled(LED_GREEN);
    PwmOut bled(LED_BLUE);
    bool TSI_Pressed = false;
    int ButtonPressed = 0; 
    //1=MOUSE_LEFT 2=MOUSE_RIGHT 4=MOUSE_MIDDLE
    unsigned int TSI_Press_Time = 0;

    while (true) 
    { // tsi mouse clicks
        if (tsi.readPercentage() < 0.01) 
        { 
            if (TSI_Pressed == true) 
            {
                if (TSI_Press_Time < 250) 
                {
                    if (ButtonPressed == 1) 
                    {
                        mouse.click(MOUSE_LEFT);
                    }
                    else if (ButtonPressed == 2) 
                    {
                        mouse.click(MOUSE_RIGHT);
                    }
                    else if (ButtonPressed == 4) 
                    {
                        mouse.click(MOUSE_MIDDLE);
                    }
                }
                TSI_Pressed = false;
                TSI_Press_Time = 0;
            }
        }
        else if (tsi.readPercentage() < 0.25) 
        { 
            if (TSI_Pressed == false) 
            {
                TSI_Pressed = true;
                ButtonPressed = 2;
            }
        }
        else if (tsi.readPercentage() < 0.5) 
        { 
            if (TSI_Pressed == false) 
            {
                TSI_Pressed = true;
                ButtonPressed = 4;
            }
        } 
        else 
        {
            if (TSI_Pressed == false) 
            {
                TSI_Pressed = true;
                ButtonPressed = 1;
            }
        }
        if (TSI_Pressed == true)
         {
            TSI_Press_Time++;
        }
        
        // mouse control
        float AccY = acc.getAccX();
        float AccX = acc.getAccY();
        bled = 1.0 - abs(AccX);
        gled = 1.0 - abs(AccY);
        signed char x = AccX * -10;
        signed char y = AccY * 10;
        mouse.move(x, y);
        wait(0.001);
        
       
        
    }
}