マイクロビットのシリアル通信について紹介したいと思います。今まで紹介してきたMicro:bitホームページのレッスンには、シリアル通信はないようですので、似たような形式で紹介します。
当記事は、シリーズでマイクロビット(Micro:bit)のプログラミングについて紹介しています。初めての方はこちらをご覧ください。
訳者注:当サイトのマイクロビットのレッスンの紹介記事ですが、以下の順で見ていただけるとマイクロビットのホームページのレッスン順になります。
micro:bit(マイクロビット)で学ぶ 1→micro:bit(マイクロビット)で学ぶ 2『温度のアクティビティー』→19『アンサリングマシン』→20『数当てゲーム』→ 5『サイコロ』→ 6『トゥルース・オア・デア』→8『マジック8ボール』→21『ラブメーター』→3『じゃんけんゲーム1』→4『じゃんけんゲーム2』→7『マジックボタン』→無線の紹介→当記事
前回の記事『無線』レッスンのチャレンジ回答例
チャレンジは、『メッセージを複数準備して、Micro:bitを振って選択してからAボタンを押して友達にランダムなメッセージを送る』でした。以下、その1例です。Micro:bitを振った時に乱数0~3を発生させて、0『Hello』、1『Hi』、2『Great』、3『Not bad』のメッセージを送信し、受け取ったメッセージを表示するプログラムです。
シリアル通信について
まず、上の手順でブロックエディターを開いてください。もし、前に作成中のプログラムが表示された場合は、保存してから左上にある『プロジェクト』メニューをクリックして『新しいプロジェクト』をクリックしてください。最初は、『最初だけ』ブロックと『ずっと』ブロックだけがプログラミングエリアにあります。
レッスン内容『メッセージを送る』
Micro:bitのホームページにシリアル通信のレッスンがありませんので、以下のプログラムを作っていきたいと思います。
2台のMicro:bitを使い、Aボタンを押したら相手のMicro:bitに『Hello』と表示し、Bボタンを押したら『Hi』と表示するプログラムです。
レッスン目標子供たちは、次のことができるようになります。
- シリアル通信を使って、友達のMicro:bitにメッセージを送ることができる
まず、Micro:bit間を以下のように3本の線で接続します。ワニ口クリップで接続できるようにP0、P1、P2、GNDはプリント配線が大きくなっていますので、通信の確認にはこちらを使用します。同じプログラムを使いますので、P0は相手のP2に接続し、GNDはGNDに接続します。(筆者注:P0、P1、P2はどの2つを使っても良いです。私のMicro:bitはP1が調子悪いのでP0とP2をつかいました。)
シリアル通信の設定を最初に行います。ブロック種類選択メニューの高度なブロック『シリアル通信』から『シリアル通信 通信先を変更する』ブロックをドラッグして、ワークスペースの『ずっと』ブロックに組み込みます。
通信速度はそのままでよいので、送信端子と受信端子を使用するピンに変更します。私の場合はP0とP2ですので、それを設定しました。どのピンをどの端子に設定してもOKです。
ボタンを押したときにメッセージを送るプログラムを作ります。ブロック種類選択メニュー『シリアル通信』から『文字列を書き出す』ブロックを選択します。
次にブロック種類選択メニュー『入力』から『ボタンAが押されたとき』ブロックを選択して、シリアル通信ブロックを組み込んで『Hello』を入力します。以下のようになります。
上のブロックをコピーして、ボタンをBにメッセージを『Hi』に修正します。これで、メッセージ送信は完了です。
ここから、メッセージを受信するプログラムを作成します。ブロック種類選択メニュー『基本』から『ずっと』ブロックと、ブロック種類選択メニュー『変数』から『変数を0にする』ブロックと、ブロック種類選択メニュー『シリアル通信』から『文字列を受信』ブロック選択して、以下のように組み合わせます。
次に変数『rcv』を作り、変数をrcvに変更します。受信したメッセージを保管する場所ですので、好きな名前で良いです。注:変数の作り方は、こちらの記事のステップ2にあります。ブロックは以下のようになります。
次にrcvを表示するために、ブロック種類選択メニュー『基本』から『文字列を表示』ブロックと、ブロック種類選択メニュー『変数』から『rcv』ブロックを選択して組み合わせて、ずっとブロックに組み込みます。以下のようになります。
最後に、これだけでは受信メッセージが無いときに何も表示されませんので、『アイコンを表示』ブロックと『一時停止』ブロックを使い、メッセージが無いときは『スマイル』アイコンを表示して1秒間待つようにします。
これでプログラムは完成です。ワークスペースは以下のようになります。
Makecodeの左下でプログラム名を決めて保存ボタンを押します。この例では『シリアル通信』としました。
ダウンロードフォルダーに『microbit-シリアル通信.hex』というファイルが出来上がっていますので、2台のMicro:bitにそれぞれコピーします。これでメッセージを送ることができます。ボタンを何も押さないときは、1秒間隔でスマイルがLEDに表示されるはずです。どちらかのMicro:bitのAボタンを押すと、相手のMicro:bitに『Hello』と表示され、Bボタンを押したら『Hi』と表示されます。
チャレンジこれでレッスンは終了ですが、チャレンジとして以下の機能を追加してみてください。
- ボタンでメッセージを送る以外に、例えばMicro:bitを左に傾けたら、『Great』を送り、右に傾けたら『Not bad』を送るプログラムを追加する。
上記の回答は、次の記事でシリアル通信のブロックとMicropythonを対比して紹介したいと思いますので、その記事で紹介します。
最後まで記事をお読みいただきありがとうございます。
記事の改善に役立てたいと思いますので、よろしければアンケートにご協力ください。
コメントを書く