はじめに
この記事は、micro:bit Advent Calendar 2022 の 16日目の記事です。
(今月、アドベントカレンダー用の記事として公開したものでは、27記事目になったりしていますw)
今回の内容は、micro:bit のアドベントカレンダーの 7日目の記事(microbit-pxt-blehidを使ってオレオレHIDを数分でつくったはなし)で初めて知った「microbit-pxt-blehid」の話です。
micro:bit を手軽に、マウスやキーボードなどの HIDデバイスにできる!?
microbit-pxt-blehid について
@Inoue_Minoru さんの記事にも書いていましたが、microbit-pxt-blehid は、micro:bit V1 だと利用できないようです。
さらに、公式の GitHub のページで情報を見てみることにします。
●bsiever/microbit-pxt-blehid: Micro:bit MakeCode support to act as a Human Interface Devices (keyboard, mouse, etc.) over Bluetooth
https://github.com/bsiever/microbit-pxt-blehid
- Bluetooth接続 で Human Interface Devices (HID) の以下のサービスを扱える
- キーボード
- マウス
- Media Keys (再生、停止、ボリュームの増減など)
- ゲームパッド
- Absolute Mouse (puts the mouse at a specific position on the screen) = ペンタブとかで使われているような位置座標の扱いをするやつっぽい
個人的に、ゲームパッドを試してみたいと思いました。
microbit-pxt-blehid を試してみる
今回試す内容
microbit-pxt-blehid を使ったマウス・キーボードは既に試されていたので、自分はゲームパッドを試してみようと思います。
どうやら、公式ページからリンクが貼られていた動画のこのあたり ⇒ https://youtu.be/n4J5GN72N_4?t=382 から再生を開始すると、情報が出てきそうです。
上記のプログラムを元にしたものを作って、試してみようと思います。
プログラムを作る
まずは、MakeCode にアクセスします。
●Microsoft MakeCode for micro:bit
https://makecode.microbit.org/
開いた画面で ble で検索しました。今回使いたい拡張機能が出てきました。
これは、Bluetooth系の拡張機能を使う際に出てくる、無線機能ブロックと併用できないよ、というやつ。ピンク色のほうのボタンを押して、次に進みます。
そして、今回試すゲームパッド関連のものはこちら(※ 一部抜粋して、掲載してみます)。
それでは、プログラムを作っていきます。
上で動画からキャプチャしたプログラムを見ると、どうやら変数を作成していた感じがしました。
そして、if文のブロックや、micro:bit の A・Bボタン関連のブロックなどを追加して、以下のプログラムとしました。
あとは、画面右上のアイコンから設定画面を開き、ペアリング設定の変更を(これも、MakeCode で Bluetooth系のやつを作る時に、よく行うやつ)。
Gamepad API との組み合わせ
ここまで準備ができたら、ゲームパッドとして動作しているかを、以下の Gamepad API のテストサイトで確認してみることにします。
●Gamepad Tester - Check Controllers and Joysticks Online
https://gamepad-tester.com
Mac と micro:bit のペアリング
Mac と micro:bit のペアリングを行います。
Mac の Bluetooth設定画面を開くと、micro:bit がペアリング対象として選択できるようになっていました。
(この後、表示名が少し変わったりしました)
Gamepad Tester上での動作確認
Mac とのペアリングもできたので、Gamepad Tester を開き、Gamepad API での接続を有効化するために、micro:bit のボタンを押します。
そしてサイト上で接続されているような見た目になったら、micro:bit の A・B ボタンを押してみます。その結果、サイト上の B0 と B1 のところが反応しているので、ブラウザとの接続・ボタン押下のイベント取得はできたのが確認できました!
余談: Gamepad API 関連で書いた記事
今回も使った Gamepad API については、今月のアドベントカレンダー用記事の中の、以下の記事でも扱っています。
もしよろしければ、ご覧ください。
- 【obniz 2022】#obniz と #p5js Web Editor と Joy-Con を組み合わせて動かしてみた! - Qiita
- 【完走賞ゲット-13】p5.js Web Editor上でボールが跳ね返る時に DualShock 4 を振動させる(gamecontroller.js での実装) - Qiita
- 【完走賞ゲット-11】gamecontroller.js を p5.js Web Editor上で使ってみる(DualShock 4 との組み合わせ) - Qiita
- 【完走賞ゲット-10】gamecontroller.js を使って DualShock 4 を JavaScript で扱う - Qiita
余談2: HID 関連で書いた記事
ちなみに、HID関連でもアドベントカレンダー用の記事をいくつか書いています。
これらも、もしよろしければ!
- 【完走賞ゲット-15】Web上やアプリで HIDデバイスの情報を手軽に確認する方法:「HID Explorer」と「USB Device Tree Viewer」 - Qiita
- 【完走賞ゲット-14】node-hid の hid-showdevicesコマンドで HIDデバイスに関する情報を出力(Node.js、JavaScript) - Qiita
- 【完走賞ゲット-9】Awesome WebHID というページを見かけて気になった話 - Qiita
- 【今年のベストバイガジェット 2022】大垣でのメーカーフェア出展でも大活躍した「BOSS FS-1-WL(無線フットスイッチ)」 - Qiita
- 【完走賞ゲット-2】ボタン搭載小型デバイスで作る簡易ワンボタンキーボード(Maker Nano RP2040 を利用) - Qiita