Lab_1
Dependencies: mbed MMA8451Q USBDevice
Diff: main.cpp
- Revision:
- 0:677959f7a9cb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Feb 21 07:39:18 2019 +0000 @@ -0,0 +1,63 @@ +#include "mbed.h" +#include "USBMouse.h" +#include "MMA8451Q.h" + +#define LED_ON 0 //outON, pwmON +#define LED_OFF 1 //outOFF,pwmOFF +DigitalOut gLED(LED_GREEN); //PTD5 + +#define PRESS_ON 0 +#define PRESS_OFF 1 +DigitalIn sw1(PTC3); //if(sw1) Release else Press +DigitalIn sw3(PTC12); //while(sw3); wait for Press + +#define rLEDperiod 150 //[ms] +PwmOut rLED(LED_RED); //PTE29 + +#define MMA8451_I2C_ADDRESS (0x1d<<1) +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); + +struct KL46_SENSOR_DATA { + int sw1State; + int sw3State; + float accValX; + float accValY; + float accValZ; +} sensorData; +#define sD sensorData + +USBMouse mouse; + +int main(void) +{ + sw1.mode(PullUp); sw3.mode(PullUp); + gLED = LED_ON; //Green LED ON to indicate running program + rLED = LED_OFF; //Red LED OFF + rLED.period(rLEDperiod); //Red LED (rLED) blinkig shows accZ + + while (1) + { + sD.sw1State = sw1; sD.sw3State = sw3; + sD.accValX = acc.getAccX(); //accX[-1..1]->mouse (Lab1) + sD.accValY = acc.getAccY(); //accY[-1..1]->mouse (Lab1) + sD.accValZ = acc.getAccZ(); //accZ[-1..1]->rLED + + if(sD.sw1State==PRESS_ON) //mouse left button + mouse.press(MOUSE_LEFT); + else + mouse.release(MOUSE_LEFT); + + if(sD.sw3State==PRESS_ON) //mouse right button + mouse.press(MOUSE_RIGHT); + else + mouse.release(MOUSE_RIGHT); + + mouse.move(sD.accValX*16, sD.accValY*16); + //mouse.move(20, 0);\ + //acc: z-axis 1g min-blinking//acc: z-axis 1g min-blinking + rLED = abs(sD.accValZ); + + //wait(0.5); + wait(0.05); //wait 50ms + } +} \ No newline at end of file