![見出し画像](https://assets.st-note.com/production/uploads/images/137845834/rectangle_large_type_2_b0897222c9ec87d2f91ab0779f4e5fcd.png?width=800)
micro:bitにカラーセンサー用の拡張機能を追加する
浜松ホトニクスのカラーセンサーでmicro:bitのロボットカーを制御してみましたが、このセンサーはI2Cで制御するため、子どもにはプログラミングに難解な部分があります。
![](https://assets.st-note.com/img/1713538229407-pyuB3stFbQ.jpg?width=800)
そこでI2C周りを隠蔽したカスタムの拡張機能を作ってみることにしました。
micro:bitのMakecodeで拡張機能を作る方法は公式のドキュメント「Building your own extension」に載っています。方法は2つ紹介されていて
・コマンドラインツールを使う方法
・Makecodeのオンラインエディタを使う方法
があります。
コマンドラインを使う方法はWindows上の環境構築が面倒なので、オンラインエディタを使います。
Makecodeエディタを使う場合も、作った拡張機能を共有するにはGitHubアカウントが必要で、以下はアカウントがすでにあるという前提です。
新規のプロジェクトを作成する
まずMakecode上に新規のプロジェクトを作成します。
Makecodeエディタのホーム画面の「読み込む」をクリックし、「あなたのGitHubリポジトリ」を選択します。
![](https://assets.st-note.com/img/1713538447440-BQ4GOi0Yi1.png?width=800)
初回はGitHubへのサインインを求められますので必要な情報を入力します。
つぎに「新規作成」をクリックします。
![](https://assets.st-note.com/img/1713538518817-N6e8xV8fDB.png?width=800)
リポジトリ名などを入力すると、自分のGitHub上に公開リポジトリが作られ必要なファイル類がコピーされます。
![](https://assets.st-note.com/img/1713538573171-LUT42PxyDs.png?width=800)
拡張機能ブロックの作成
ブロックの作り方は公式のDefining blocksにあります。このドキュメントにも紹介されていますが、サンプル集として用意されているPlayground にコード例がありますので、参考になります。
MakecodeのブロックのプログラムはTypeScriptで記述します。Makecodeエディタを使う場合はJavaScriptモードを使用します。
![](https://assets.st-note.com/img/1713538858590-gHZfp8dNtS.png?width=800)
上述の設定によりGitHubに関連付けられていますので、画面左のエクスプローラーに関連ファイル名が表示され、同じものがGitHubリポジトリに同期されます。いくつかファイルがありますが、プログラムを書くファイルはmain.tsですのでこれを選択します。
既にブロックで作ったプログラムがある場合は、JavaScriptモードに変換してから多少修正するだけです。
拡張ブロックを作成するのに最低限必要な修正は以下の項目です。
拡張機能全体の名前
ブロックのカテゴリーに表示される名前です。これをプログラム全体のnamespaceとします。この例だと、「カラーセンサー」というnamespaceでプログラムの全体を囲みます。
カテゴリーに表示される名前の色やアイコンを定義するため、namespaceの前に「//% 」で始まる行を入れます。詳細は公式Defining blocksを参照してください。
![](https://assets.st-note.com/img/1713539676071-QVGLikBEIE.png?width=800)
ブロックのプログラム
ブロックにしたいプログラムは関数で記述し、関数は外部参照できるようにexportをつけ、さらに「//% block」という修飾をつける必要があります。
ブロックには関数名が表示されますが、他の名称にした場合は「//% block = "名称"」とします。
![](https://assets.st-note.com/img/1713539781171-YFdJJbiG2r.png)
これも詳細は公式のDefining blocksを参照してください。
ブロックの形(イベント、引数、戻値)などはプログラムごとに自動的に決定されます。今回の例のように値を返す場合は、関数に戻値の型を指定して、return文をいれておくだけです。このあたりも公式ドキュメントとサンプルに例があります。
下はRGBのRの値を返す例です。
![](https://assets.st-note.com/img/1713539974650-Tt4N2AN2vM.png)
![](https://assets.st-note.com/img/1713540055966-kYSOQOLIfM.png)
使い方・参考
完成したら、使用したいMakecodeエディタの、拡張機能画面の検索・URLの欄にGitHubリポジトリのURLを入れます。公開設定になっているので、だれでも機能を追加できます。
GitHubとリンクしていますので、定期的にPushしてやればGitHubともローカルのGitとも同期できます。
ローカルのエディタのほうが使いやすい場合は、ローカルで編集してから、テストの時はGitHubにPushして、逆にMakecodeエディタにPullする使い方もできます。
![](https://assets.st-note.com/img/1713540407813-fNAt8aMsDB.png?width=800)
参考文献
micro:bitでお手軽にGroveモジュールを利用するための独自拡張機能を作ってみる
付録1-8 2020年リリース(サヌキテックネット)
以上
この記事が気に入ったらサポートをしてみませんか?