Ported a code that FRDM-KL46Z act as a USB mouse originally developed by jksoft, to FRDM-K22F. SW2 and SW3 act as left and right buttons respectively because K22F lacks a touch sensor, in contrast to KL46Z.
Dependencies: FXOS8700Q USBDevice mbed
jksoftさんのUSBマウス(FRDM-KL46Z用)をFRDM-K22Fにポーティング。 KL46Zとは異なり、K22Fにはタッチセンサがありません。このため、SW2を左ボタン、SW3を右ボタンとしています。
Ported USB mouse for FRDM-KL46Z originally developed by jksoft to FRDM-K22F. SW2 and SW3 act as left and right buttons respectively because K22F lacks a touch sensor, in contrast to KL46Z.
Revision 2:0053ee456979, committed 2015-03-21
- Comitter:
- sknn
- Date:
- Sat Mar 21 15:54:47 2015 +0000
- Parent:
- 1:3c6efa018b57
- Commit message:
- Fixed y-axis mouse cursor movement (it was opposite directions).; Enabled printf debugging.; Tiny refactoring.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 3c6efa018b57 -r 0053ee456979 main.cpp --- a/main.cpp Sat Mar 21 13:52:35 2015 +0000 +++ b/main.cpp Sat Mar 21 15:54:47 2015 +0000 @@ -2,12 +2,24 @@ #include "USBMouseKeyboard.h" #include "FXOS8700Q.h" -USBMouseKeyboard key_mouse; // Use USBMouseKeyboard which emulates USB mouse & keyboard -FXOS8700Q_acc acc( PTB3, PTB2, FXOS8700CQ_SLAVE_ADDR2); // Use accelerometer +USBMouseKeyboard key_mouse; // Use USBMouseKeyboard which emulates USB mouse & keyboard +FXOS8700Q_acc acc( PTB3, PTB2, FXOS8700CQ_SLAVE_ADDR2 ); // Use accelerometer MotionSensorDataUnits acc_data; DigitalIn sw2(SW2); DigitalIn sw3(SW3); +int calcMouseMovement(float f) { + if( f > 0.3f ) { + // Board is listing to the right or to the front + return 10; + } else if( f < -0.3f ) { + // Board is listing to the left or to the back + return -10; + } else { + return 0; + } +} + int main(void) { acc.enable(); @@ -16,22 +28,11 @@ acc.getAxis(acc_data); float x = acc_data.x; // Substitute x for x-axis value of accelerometer float y = acc_data.y; // Substitute y for y-axis value of accelerometer - - if( x > 0.3f ) { - // Board is listing to the right - key_mouse.move(10, 0); // Move the mouse cursor +10 in x-axis direction - } else if( x < -0.3 ) { - // Board is listing to the left - key_mouse.move(-10, 0); // Move the mouse cursor -10 in x-axis direction - } - if( y > 0.3f ){ - // Board is listing to the front - key_mouse.move(0, -10); // Move the mouse cursor +10 in y-axis direction - } else if( y < -0.3 ) { - // Board is listing to the back - key_mouse.move(0, 10); // Move the mouse cursor -10 in y-axis direction - } + key_mouse.move(calcMouseMovement(x), 0); // Move the mouse cursor in x-axis direction + key_mouse.move(0, calcMouseMovement(-y)); // Move the mouse cursor in y-axis direction + printf("%f => key_mouse.move(%d, 0)\r\n", x, calcMouseMovement(x)); + printf("%f => key_mouse.move(0, %d)\r\n", y, calcMouseMovement(y)); if( sw2 == 1 ) { // SW2 is not pressed