ライブラリ(パッケージ)の利用

 今回はマイクロビットにカタカナでメッセージを表示するプログラムを作成します。誰かに何かを伝えたい場合にマイクロビットにメッセージを表示しておくと便利です。マイクロビットは英数字のみの表示ですが、今回はライブラリ(パッケージ)を利用してカタカナでメッセージを表示します。
 今回は送信側1台と受信側は1台以上が必要です。送信側でメッセージを発信すると、受信する複数のマイクロビットでは同じメッセージが表示されます。これはテレビやラジオなどの一斉放送(ブロードキャスト)と同じです。異なる部屋で同じメッセージを受信できるので、何かを複数人に知らせる場合に便利です。

表示するメッセージの選択

 マイクロビットはキーボードがないため、任意のメッセージを入力するのは面倒です。そこで、あらかじめ用意したメッセージを選択して、他のマイクロビットに送信することにします。メッセージの選択はボタンAで行い、送信はボタンBで行います。メッセージの選択時はLEDに番号を表示するようにします。
 まず、送信するメッセージですが、以下の4つにします。最後は空白になっていますが、これはメッセージを消すために利用します。

 OHAYO
 OYASUMI
 HELP
 (空白)

受信側のプログラム
 最初に受信側のプログラムを作成します。受信側では送信された文字列を、そのままLEDに表示するだけです。以下のようにブロックを組み立てます。

 JavaScriptコードだと以下のようになります。

 radio.onDataPacketReceived( ({ receivedString }) =>  {
     basic.showString(receivedString)
 })
 radio.setGroup(4)
 basic.forever(() => {

 })

 作成したらダウンロードボタンをクリックしてHEXファイルを作成します。作成したHEXファイルをマイクロビットに転送しておきます。転送したら電源に接続して受信可能な状態にしておきます。

送信側のプログラム
 次に送信側のプログラムを作成します。最初にボタンAが押されたらメッセージを送信するプログラムで動作を確認します。以下のようにブロックを組み立てます。 

 JavaScriptコードだと以下のようになります。

 input.onButtonPressed(Button.A, () => {
     radio.sendString("OHAYO")
 })
 radio.setGroup(4)
 basic.forever(() => {

 })

プログラムができたらマイクロビットに転送し動作を確認します。ボタンAを押すと受信側にOHAYOの文字が流れます。受信側のマイクロビットが複数台あれば、同じメッセージが表示されます。

  • 送信側でAボタンを押すと受信側で「OHAYO」と表示

送信プログラムの改良
正しく送受信できることを確認したら、送信側のプログラムを改良します。ボタンBでメッセージを選択しボタンAでメッセージを送信するようにします。メッセージは4つだけでなく、いくつでも追加できるようにします。そこで配列を利用し、メッセージを格納しておくことにします。
 配列は以下の手順で追加します。「メッセージ」という名前の配列変数を用意し、要素内に表示する文字を書いておきます。配列ブロックの要素である「値」は最初2つしかありません。新たに要素を増やすには歯車のアイコンをクリックします。するとポップアップが表示されます。ポップアップ内の左側にある「値」を配列の値の下にドラッグドロップします。このようにして必要な数だけ追加します。削除することもできます。削除するには選択してdeleteキーを押します。
 「値」を追加したら、次に文字列のブロックを組み込んでいきます。

  • 新規プロジェクトから、「変数」カテゴリをクリック。「変数を追加する」を選び

  • 表示されるダイアログに「メッセージ」を入力するとメッセージ変数が追加される

  • 高度なブロックから「配列」カテゴリをクリックし、「この配列を作成" "」を選び配置。歯車アイコンをクリックし、

  • 表示されるダイアログから「値」を配列の中へ移動させて、4つに増やす

  • 高度なブロックから「文字列」カテゴリをクリックし、「” ”」ブロックを選択して配列の中に入れていく

  • 図のようにすべて埋めたら、

  • 文字列の中にOHAYO、OYASUMI、HELPと入力。何も入れない空の値と合わせて4つを作る

 配列に表示するメッセージが準備できたら以下のようにブロックを組み立てます。

 JavaScriptコードだと以下のようになります。

 let メッセージ: string[] = []
 let 変数 = 0
 input.onButtonPressed(Button.A, () => {
     radio.sendString(メッセージ[変数])
 })
 input.onButtonPressed(Button.B, () => {
     変数 += 1
     変数 = 変数 % メッセージ.length
     basic.showNumber(変数)
 })
 radio.setGroup(4)
 変数 = 0
 メッセージ = ["OHAYO", "OYASUMI", "HELP", " "]
 basic.showNumber(変数)
 basic.forever(() => {

 })

プログラムができたらマイクロビットに転送して動作を確認します。送信するメッセージ番号をボタンBで選択したら、ボタンAを押して送信します。受信側のマイクロビットに選択したメッセージが表示されます。

  • 送信側のAボタンで1,2,3の番号を選択し、Bボタンを押す。受信側では、番号に対応したOHAYO、OYASUMI、HELPが表示される

ライブラリ(パッケージ)の読み込み

 次にカタカナでメッセージを表示してみます。ここではカタカナ表示のライブラリを使用します。なお、メッセージの文字列としてカタカナを送信することができないため、表示に対応する番号を送受信することにします。

 新規プロジェクトを作成したら、ライブラリを読み込ませます。今回使用するライブラリは以下のページにあります。

pxt-katakana
https://github.com/mbitfun/pxt-katakana

ライブラリを読み込むには、図のように高度なブロックの一番下にある「パッケージを追加する」をクリックします。するとライブラリのURLを入力するダイアログが出ます。ここに上記のURLを入力します。また、「カタカナ」と入力して検索すると出てくることがあります。
ライブラリが読み込まれると「カタカナ」というカテゴリが追加されます。

  • 高度なブロックのなかの「パッケージを追加する」をクリックする

  • 表示されるダイアログにインポートするURLを入力すると

  • パッケージが表示されるのでこれをクリックする。すると、「カタカナ」カテゴリが追加されている

カタカナを表示させてみる

ブロックを配置して表示するメッセージを半角カタカナで入力します。全角カタカナではなく半角カタカナで入力しないと動作しません。

  • 「カタカナ」カテゴリから「文字列を表示” ”」を選んで「ずっと」ブロックに配置する。半角カタカナを入力する

実際にカタカナが表示されるか確認してみましょう。プログラムをマイクロビットに転送します。実際のところ、あまり表示が速くありませんが、カタカナのメッセージが流れていきます。

  • 実際にマイクロビットに転送すると設定したカタカナが表示される。ここでは「ス」「ヨ」を表示

受信側の改良

 最初に作成したプログラムは送信側でメッセージを送りました。しかし、カタカナを送ることはできないため、今度は受信側で対応する必要があります。送信側は表示するメッセージ番号を送るだけの簡単なプログラムになります。

 受信側のブロックは以下のように組み立てます。

 JavaScriptコードだと以下のようになります。

 let 変数: string[] = []
 radio.onDataPacketReceived( ({ receivedNumber }) =>  {
     katakana.showString(変数[receivedNumber])
 })
 radio.setGroup(4)
 変数 = ["オハヨ-", "オヤスミ", "ヘルプ!", ""]
 basic.forever(() => {

 })

 送信側のブロックは以下のように組み立てます。

 JavaScriptコードだと以下のようになります。

 let 変数 = 0
 input.onButtonPressed(Button.A, () => {
     radio.sendNumber(変数)
 })
 input.onButtonPressed(Button.B, () => {
     変数 += 1
     変数 = 変数 % 4
     basic.showNumber(変数)
 })
 radio.setGroup(4)
 変数 = 0
 basic.showNumber(変数)
 basic.forever(() => {

 })

 プログラムができたらマイクロビットに転送して動作を確認します。送信側で番号を選択してボタンAを押すと受信側のマイクロビットにカタカナでメッセージが流れます。

 メッセージを変更したり増やしたりしみるとよいでしょう。また、メッセージを一度ではなく繰り返し流すように改良してみてください。

著者 古籏一浩
プログラミングをベースにして面白そうなものはとりあえずやってみるというスタンス。複雑なものよりシンプルで楽しめるものが好み。最近は30年前に移植したゲーム(mz-700版 SPACE HARRIER)の話などを書いたりしています。
著者サイト:http://www.openspc2.org/