Has the Limbic Controller act as a mouse over HID protocol (and wire). Generates absolute position from seat rotation (both shells cumulative), as such disables use of regular mouse.
Dependencies: MPU6050 QEI USBDevice mbed
Fork of Seeed_Grove_3-Axis_Digital_Accelorometer_Example by
Diff: main.cpp
- Revision:
- 3:b3aa280de9f3
- Parent:
- 2:a7dc264ecd98
--- a/main.cpp Tue Apr 05 16:19:38 2016 +0000 +++ b/main.cpp Fri Apr 15 11:21:57 2016 +0000 @@ -35,6 +35,7 @@ float pitchL, yawL, rollL, pitchR, yawR, rollR; float pitchL0, yawL0, rollL0, pitchR0, yawR0, rollR0; +float pitchLold, yawLold, pitchRold, yawRold; float pitchAcc[2], rollAcc[2]; QEI encL (p5, p6, NC, 5000); @@ -50,7 +51,7 @@ atten += 0.1; lowerResTimer.reset(); }*/ - float atten = 5.0; + float atten = 1.0; yawL = floor((float)encL.getPulses()/atten)*180.0/(5000.0/atten); yawR = floor((float)encR.getPulses()/atten)*180.0/(5000.0/atten); } @@ -181,11 +182,13 @@ bool firstFrame = true; pitchL0 = yawL0 = pitchR0 = yawR0 = 0; + pitchLold = yawLold = pitchRold = yawRold = 0; + alpha[0] = alpha[1] = ALPHA; sendtimer.start(); - int x,y; + double x,y; while(1){ if(MPUL.read(MPU6050_INT_STATUS) & 0x01){ // check if data ready interrupt GetIMUAnglesAvg(LEFT); @@ -218,13 +221,26 @@ yawR0 = yawR; } - int x = -((yawL-yawL0))*960 + 960; - int y = ((pitchL-pitchL0)*2)*1080; + float accellYaw; + + if ((abs(yawR - yawRold) + abs(yawL - yawLold)) > 10.0) accellYaw = 100.0; + else if ((abs(yawR - yawRold) + abs(yawL - yawLold)) < 0.1) accellYaw = 0.01; + else accellYaw = 0.5F; + + yawRold = yawR; + yawLold = yawL; + pitchLold = pitchL; + pitchRold = pitchR; + + x = ((yawR-yawR0)+(yawL-yawL0))*0.075*-16384.0 + 16384; + y = ((pitchL-pitchL0)+(pitchR-pitchR0))*0.15*16384.0 - 16384; if (x < 0) x = 0; - if (x > 1920) x = 1920; + if (x > 32767) x = 32767; if (y < 0) y = 0; - if (y > 1080) y = 1080; + if (y > 32767) y = 32767; + + mouse.move((int)x,(int)y); /*if (((yawL-yawL0)) > 2.5){ mouse.press(1);