![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Lab_1
Dependencies: mbed MMA8451Q USBDevice
main.cpp@0:677959f7a9cb, 2019-02-21 (annotated)
- Committer:
- Lokkus
- Date:
- Thu Feb 21 07:39:18 2019 +0000
- Revision:
- 0:677959f7a9cb
Lab_1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Lokkus | 0:677959f7a9cb | 1 | #include "mbed.h" |
Lokkus | 0:677959f7a9cb | 2 | #include "USBMouse.h" |
Lokkus | 0:677959f7a9cb | 3 | #include "MMA8451Q.h" |
Lokkus | 0:677959f7a9cb | 4 | |
Lokkus | 0:677959f7a9cb | 5 | #define LED_ON 0 //outON, pwmON |
Lokkus | 0:677959f7a9cb | 6 | #define LED_OFF 1 //outOFF,pwmOFF |
Lokkus | 0:677959f7a9cb | 7 | DigitalOut gLED(LED_GREEN); //PTD5 |
Lokkus | 0:677959f7a9cb | 8 | |
Lokkus | 0:677959f7a9cb | 9 | #define PRESS_ON 0 |
Lokkus | 0:677959f7a9cb | 10 | #define PRESS_OFF 1 |
Lokkus | 0:677959f7a9cb | 11 | DigitalIn sw1(PTC3); //if(sw1) Release else Press |
Lokkus | 0:677959f7a9cb | 12 | DigitalIn sw3(PTC12); //while(sw3); wait for Press |
Lokkus | 0:677959f7a9cb | 13 | |
Lokkus | 0:677959f7a9cb | 14 | #define rLEDperiod 150 //[ms] |
Lokkus | 0:677959f7a9cb | 15 | PwmOut rLED(LED_RED); //PTE29 |
Lokkus | 0:677959f7a9cb | 16 | |
Lokkus | 0:677959f7a9cb | 17 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
Lokkus | 0:677959f7a9cb | 18 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); |
Lokkus | 0:677959f7a9cb | 19 | |
Lokkus | 0:677959f7a9cb | 20 | struct KL46_SENSOR_DATA { |
Lokkus | 0:677959f7a9cb | 21 | int sw1State; |
Lokkus | 0:677959f7a9cb | 22 | int sw3State; |
Lokkus | 0:677959f7a9cb | 23 | float accValX; |
Lokkus | 0:677959f7a9cb | 24 | float accValY; |
Lokkus | 0:677959f7a9cb | 25 | float accValZ; |
Lokkus | 0:677959f7a9cb | 26 | } sensorData; |
Lokkus | 0:677959f7a9cb | 27 | #define sD sensorData |
Lokkus | 0:677959f7a9cb | 28 | |
Lokkus | 0:677959f7a9cb | 29 | USBMouse mouse; |
Lokkus | 0:677959f7a9cb | 30 | |
Lokkus | 0:677959f7a9cb | 31 | int main(void) |
Lokkus | 0:677959f7a9cb | 32 | { |
Lokkus | 0:677959f7a9cb | 33 | sw1.mode(PullUp); sw3.mode(PullUp); |
Lokkus | 0:677959f7a9cb | 34 | gLED = LED_ON; //Green LED ON to indicate running program |
Lokkus | 0:677959f7a9cb | 35 | rLED = LED_OFF; //Red LED OFF |
Lokkus | 0:677959f7a9cb | 36 | rLED.period(rLEDperiod); //Red LED (rLED) blinkig shows accZ |
Lokkus | 0:677959f7a9cb | 37 | |
Lokkus | 0:677959f7a9cb | 38 | while (1) |
Lokkus | 0:677959f7a9cb | 39 | { |
Lokkus | 0:677959f7a9cb | 40 | sD.sw1State = sw1; sD.sw3State = sw3; |
Lokkus | 0:677959f7a9cb | 41 | sD.accValX = acc.getAccX(); //accX[-1..1]->mouse (Lab1) |
Lokkus | 0:677959f7a9cb | 42 | sD.accValY = acc.getAccY(); //accY[-1..1]->mouse (Lab1) |
Lokkus | 0:677959f7a9cb | 43 | sD.accValZ = acc.getAccZ(); //accZ[-1..1]->rLED |
Lokkus | 0:677959f7a9cb | 44 | |
Lokkus | 0:677959f7a9cb | 45 | if(sD.sw1State==PRESS_ON) //mouse left button |
Lokkus | 0:677959f7a9cb | 46 | mouse.press(MOUSE_LEFT); |
Lokkus | 0:677959f7a9cb | 47 | else |
Lokkus | 0:677959f7a9cb | 48 | mouse.release(MOUSE_LEFT); |
Lokkus | 0:677959f7a9cb | 49 | |
Lokkus | 0:677959f7a9cb | 50 | if(sD.sw3State==PRESS_ON) //mouse right button |
Lokkus | 0:677959f7a9cb | 51 | mouse.press(MOUSE_RIGHT); |
Lokkus | 0:677959f7a9cb | 52 | else |
Lokkus | 0:677959f7a9cb | 53 | mouse.release(MOUSE_RIGHT); |
Lokkus | 0:677959f7a9cb | 54 | |
Lokkus | 0:677959f7a9cb | 55 | mouse.move(sD.accValX*16, sD.accValY*16); |
Lokkus | 0:677959f7a9cb | 56 | //mouse.move(20, 0);\ |
Lokkus | 0:677959f7a9cb | 57 | //acc: z-axis 1g min-blinking//acc: z-axis 1g min-blinking |
Lokkus | 0:677959f7a9cb | 58 | rLED = abs(sD.accValZ); |
Lokkus | 0:677959f7a9cb | 59 | |
Lokkus | 0:677959f7a9cb | 60 | //wait(0.5); |
Lokkus | 0:677959f7a9cb | 61 | wait(0.05); //wait 50ms |
Lokkus | 0:677959f7a9cb | 62 | } |
Lokkus | 0:677959f7a9cb | 63 | } |