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.

Committer:
sknn
Date:
Sat Mar 21 10:41:49 2015 +0000
Revision:
0:2a59676aa462
Child:
1:3c6efa018b57
jksoft???USB???(FRDM-KL46Z??)?FRDM-K22F???????; ? https://media.dmm-make.com/item/2065/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sknn 0:2a59676aa462 1 #include "mbed.h"
sknn 0:2a59676aa462 2 #include "USBMouseKeyboard.h"
sknn 0:2a59676aa462 3 #include "FXOS8700Q.h"
sknn 0:2a59676aa462 4
sknn 0:2a59676aa462 5 USBMouseKeyboard key_mouse; // USBキーボードマウスライブラリを使う
sknn 0:2a59676aa462 6 FXOS8700Q_acc acc( PTB3, PTB2, FXOS8700CQ_SLAVE_ADDR2); // 加速度センサライブラリを使う
sknn 0:2a59676aa462 7 MotionSensorDataUnits acc_data;
sknn 0:2a59676aa462 8 DigitalIn sw2(SW2);
sknn 0:2a59676aa462 9 DigitalIn sw3(SW3);
sknn 0:2a59676aa462 10
sknn 0:2a59676aa462 11 int main(void) {
sknn 0:2a59676aa462 12
sknn 0:2a59676aa462 13 acc.enable();
sknn 0:2a59676aa462 14
sknn 0:2a59676aa462 15 while (1) {
sknn 0:2a59676aa462 16 acc.getAxis(acc_data);
sknn 0:2a59676aa462 17 float x = acc_data.x; // 加速度センサX軸の値を変数xに代入
sknn 0:2a59676aa462 18 float y = acc_data.y; // 加速度センサy軸の値を変数yに代入
sknn 0:2a59676aa462 19
sknn 0:2a59676aa462 20 if( x > 0.3f ) {
sknn 0:2a59676aa462 21 // ボードが右に傾いてる
sknn 0:2a59676aa462 22 key_mouse.move(10, 0); // マウスカーソルをX方向に10動かす
sknn 0:2a59676aa462 23 } else if( x < -0.3 ) {
sknn 0:2a59676aa462 24 // ボードが左に傾いてる
sknn 0:2a59676aa462 25 key_mouse.move(-10, 0); // マウスカーソルをX方向に-10動かす
sknn 0:2a59676aa462 26 }
sknn 0:2a59676aa462 27
sknn 0:2a59676aa462 28 if( y > 0.3f ){
sknn 0:2a59676aa462 29 // ボードが前に傾いてる
sknn 0:2a59676aa462 30 key_mouse.move(0, -10); // マウスカーソルをY方向に-10動かす
sknn 0:2a59676aa462 31 } else if( y < -0.3 ) {
sknn 0:2a59676aa462 32 // ボードが後ろに傾いてる
sknn 0:2a59676aa462 33 key_mouse.move(0, 10); // マウスカーソルをY方向に10動かす
sknn 0:2a59676aa462 34 }
sknn 0:2a59676aa462 35
sknn 0:2a59676aa462 36 if( sw2 == 1 ) {
sknn 0:2a59676aa462 37 // SW2が押されていない状態
sknn 0:2a59676aa462 38 key_mouse.release(MOUSE_LEFT); // マウス左クリックを解放した状態にする
sknn 0:2a59676aa462 39 } else {
sknn 0:2a59676aa462 40 // SW2が押されている状態
sknn 0:2a59676aa462 41 key_mouse.press(MOUSE_LEFT); // マウス左クリックをクリックした状態にする
sknn 0:2a59676aa462 42 }
sknn 0:2a59676aa462 43
sknn 0:2a59676aa462 44 if( sw3 == 1 ) {
sknn 0:2a59676aa462 45 // SW3が押されていない状態
sknn 0:2a59676aa462 46 key_mouse.release(MOUSE_RIGHT); // マウス右クリックを解放した状態にする
sknn 0:2a59676aa462 47 } else {
sknn 0:2a59676aa462 48 // SW3が押されている状態
sknn 0:2a59676aa462 49 key_mouse.press(MOUSE_RIGHT); // マウス右クリックをクリックした状態にする
sknn 0:2a59676aa462 50 }
sknn 0:2a59676aa462 51 wait(0.1);
sknn 0:2a59676aa462 52 }
sknn 0:2a59676aa462 53 }