...

Dependencies:   MMA8451Q mbed-rtos mbed

Fork of Super_Hans_USB by Tristan Hughes

Committer:
anuragdhutti
Date:
Fri Dec 27 22:04:23 2013 +0000
Revision:
1:e1a1bf8c36d9
Parent:
0:d270a9981e69
Superhans mbed code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
trisjph 0:d270a9981e69 1 #include "mbed.h"
trisjph 0:d270a9981e69 2 #include "rtos.h"
trisjph 0:d270a9981e69 3 #define MMA8451_I2C_ADDRESS (0x1d<<1)
trisjph 0:d270a9981e69 4 #include "MMA8451Q.h"
trisjph 0:d270a9981e69 5 #include "USBMouseKeyboard.h"
trisjph 0:d270a9981e69 6 #define PI 3.14159265
trisjph 0:d270a9981e69 7
trisjph 0:d270a9981e69 8 PwmOut led1(LED2);
trisjph 0:d270a9981e69 9 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
trisjph 0:d270a9981e69 10 AnalogIn ain(PTC2);
trisjph 0:d270a9981e69 11 Serial pc(USBTX, USBRX);
trisjph 0:d270a9981e69 12 USBMouseKeyboard key_mouse;
trisjph 0:d270a9981e69 13 Mutex USB_mutex;
trisjph 0:d270a9981e69 14 //USBHID key_mouse;
trisjph 0:d270a9981e69 15
trisjph 0:d270a9981e69 16 void click_thread(void const *args)
trisjph 0:d270a9981e69 17 {
trisjph 0:d270a9981e69 18 int press;
trisjph 0:d270a9981e69 19 while(true) {
trisjph 0:d270a9981e69 20 if( (ain.read()>0.3) && (press == 0) ) {
trisjph 0:d270a9981e69 21 press = 1;
trisjph 0:d270a9981e69 22 led1 != led1;
trisjph 0:d270a9981e69 23 pc.printf("%i\n", press);
trisjph 0:d270a9981e69 24 USB_mutex.lock();
trisjph 0:d270a9981e69 25 key_mouse.press(MOUSE_LEFT);
trisjph 0:d270a9981e69 26 USB_mutex.unlock();
trisjph 0:d270a9981e69 27 } else if ( (ain.read()<0.3) && (press == 1) ) {
trisjph 0:d270a9981e69 28 press = 0;
trisjph 0:d270a9981e69 29 pc.printf("%i\n", press);
trisjph 0:d270a9981e69 30 USB_mutex.lock();
trisjph 0:d270a9981e69 31 key_mouse.release(MOUSE_LEFT);
trisjph 0:d270a9981e69 32 USB_mutex.unlock();
trisjph 0:d270a9981e69 33 }
trisjph 0:d270a9981e69 34 Thread::wait(100);
trisjph 0:d270a9981e69 35 }
trisjph 0:d270a9981e69 36 }
trisjph 0:d270a9981e69 37
trisjph 0:d270a9981e69 38 void mouse_thread(void const *args)
trisjph 0:d270a9981e69 39 {
trisjph 0:d270a9981e69 40 while(true) {
trisjph 0:d270a9981e69 41
trisjph 0:d270a9981e69 42 USB_mutex.lock();
anuragdhutti 1:e1a1bf8c36d9 43 pc.printf("%f, %f, %f\n", acc.getAccX(), acc.getAccY(), acc.getAccZ() );
anuragdhutti 1:e1a1bf8c36d9 44
anuragdhutti 1:e1a1bf8c36d9 45 if (acc.getAccZ()
anuragdhutti 1:e1a1bf8c36d9 46
anuragdhutti 1:e1a1bf8c36d9 47 key_mouse.move(-acc.getAccZ()*10, 0);
anuragdhutti 1:e1a1bf8c36d9 48 key_mouse.move(0, acc.getAccX()*10);
trisjph 0:d270a9981e69 49 USB_mutex.unlock();
trisjph 0:d270a9981e69 50 Thread::wait(1);
trisjph 0:d270a9981e69 51 }
trisjph 0:d270a9981e69 52 }
trisjph 0:d270a9981e69 53
trisjph 0:d270a9981e69 54 void heartbeat_thread(void const *args)
trisjph 0:d270a9981e69 55 {
trisjph 0:d270a9981e69 56 int i;
trisjph 0:d270a9981e69 57 led1.period(0.001);
trisjph 0:d270a9981e69 58 while(true) {
trisjph 0:d270a9981e69 59 for(i=0; i<180; i++) {
trisjph 0:d270a9981e69 60 led1 = sin(i*PI/180);
trisjph 0:d270a9981e69 61 Thread::wait(10);
trisjph 0:d270a9981e69 62 }
trisjph 0:d270a9981e69 63 }
trisjph 0:d270a9981e69 64
trisjph 0:d270a9981e69 65 }
trisjph 0:d270a9981e69 66
trisjph 0:d270a9981e69 67 int main()
trisjph 0:d270a9981e69 68 {
anuragdhutti 1:e1a1bf8c36d9 69 //Thread click(click_thread);
trisjph 0:d270a9981e69 70 Thread mouse(mouse_thread);
trisjph 0:d270a9981e69 71 Thread heartbeat(heartbeat_thread);
trisjph 0:d270a9981e69 72
trisjph 0:d270a9981e69 73 led1 = 1.0;
trisjph 0:d270a9981e69 74
trisjph 0:d270a9981e69 75 while (true) {
trisjph 0:d270a9981e69 76 }
trisjph 0:d270a9981e69 77 }