Superhans v1 (index finger click and second finger 'q')
Dependencies: MMA8451Q USBDevice mbed-rtos mbed
Fork of Super_Hans_USB by
Diff: main.cpp
- Revision:
- 0:d270a9981e69
- Child:
- 1:e1a1bf8c36d9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Dec 16 11:04:05 2013 +0000 @@ -0,0 +1,73 @@ +#include "mbed.h" +#include "rtos.h" +#define MMA8451_I2C_ADDRESS (0x1d<<1) +#include "MMA8451Q.h" +#include "USBMouseKeyboard.h" +#define PI 3.14159265 + +PwmOut led1(LED2); +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); +AnalogIn ain(PTC2); +Serial pc(USBTX, USBRX); +USBMouseKeyboard key_mouse; +Mutex USB_mutex; +//USBHID key_mouse; + +void click_thread(void const *args) +{ + int press; + while(true) { + if( (ain.read()>0.3) && (press == 0) ) { + press = 1; + led1 != led1; + pc.printf("%i\n", press); + USB_mutex.lock(); + key_mouse.press(MOUSE_LEFT); + USB_mutex.unlock(); + } else if ( (ain.read()<0.3) && (press == 1) ) { + press = 0; + pc.printf("%i\n", press); + USB_mutex.lock(); + key_mouse.release(MOUSE_LEFT); + USB_mutex.unlock(); + } + Thread::wait(100); + } +} + +void mouse_thread(void const *args) +{ + while(true) { + + USB_mutex.lock(); + key_mouse.move(-acc.getAccX()*10, 0); + key_mouse.move(0, acc.getAccY()*10); + USB_mutex.unlock(); + Thread::wait(1); + } +} + +void heartbeat_thread(void const *args) +{ + int i; + led1.period(0.001); + while(true) { + for(i=0; i<180; i++) { + led1 = sin(i*PI/180); + Thread::wait(10); + } + } + +} + +int main() +{ + Thread click(click_thread); + Thread mouse(mouse_thread); + Thread heartbeat(heartbeat_thread); + + led1 = 1.0; + + while (true) { + } +}