Lab_1

Dependencies:   mbed MMA8451Q USBDevice

Committer:
Lokkus
Date:
Thu Feb 21 07:39:18 2019 +0000
Revision:
0:677959f7a9cb
Lab_1

Who changed what in which revision?

UserRevisionLine numberNew 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 }