【観賞用】無線機能でイルミネーション
micro:bitの無線機能を使って、1台の親機で複数の子機を制御します。子機のLED画面で彩るイルミネーションをお楽しみください。このプログラムには、micro:bitが2台以上必要です。
1.楽しみ方
子機と親機の電源を入れます。親機が自動的に子機を探索します。親機に見つかった子機は、LED画面の表示が、寝顔から笑顔になります。すべての子機が笑顔になったら準備完了です。親機のAボタンを押すとイルミネーションが始まります。映像では、1台の親機で6台の子機を制御しています。
2.このプログラムの動作に必要なもの
このプログラムは、micro:bit本体のみで動作します。
- micro:bit本体(2台以上)
- パソコン(*1)
- USBケーブル(*1)
(*1):パソコン・USBケーブルは、プログラミングに必要なものです。
3.親機のサンプルプログラム(ブロック)
親機のサンプルプログラム(ブロック)です。
最初だけ実行されるプログラム
無線グループの設定と、子機を記録するための配列ChildListと子機の台数ChildNumberを初期化します。
無線で受信したときに実行されるプログラム
子機から送信されるシリアル番号を記録するルーチンです。子機から送信されるコマンド「ChildName」とシリアル番号(value値)の組み合わせを受信すると、配列ChildListに記録して、子機の台数ChildNumberをカウントアップします。その後、親機から「登録完了」を意味するコマンド「ChildAccept」とシリアル番号の組み合わせを送信します。
ボタンAが押されたときに実行されるプログラム
イルミネーションを制御するルーチンです。子機に対して、LED画面に表示するパターンをコマンドで送信します。コマンドには、LED画面を点灯する「ShowLEDsP1」~「ShowLEDsP5」と消灯する「ClearLEDsP1」があります。コマンドとシリアル番号を組み合わせて送信することで、子機別に指示することができます。また、コマンドと「0」を組み合わせて送信することで、子機全台に指示することができます。
ボタンA+Bが押されたときに実行されるプログラム
ボタンAとボタンBを同時に押すことで、子機の再登録を行うルーチンです。コマンド「ChildReset」と「0」の組み合わせを送信します。
4.親機のサンプルプログラム(JavaScript)
親機のサンプルプログラム(Javascript)です。
5.子機のサンプルプログラム(ブロック)
子機のサンプルプログラム(ブロック)です。
最初だけ実行されるプログラム
無線グループの設定と、親機に登録を依頼するルーチンです。コマンド「ChildName」と自身のシリアル番号を組み合わせて送信します。このコマンドは、変数WaitingAcceptが偽(false)になるまで1000ミリ秒毎に送信し続けられます。なお、変数WaitingAcceptは次のルーチン内で真(true)から偽(false)へ変更されます。
無線で受信したときに実行されるプログラム
親機から送信されるコマンドを処理するルーチンです。親機から「登録完了」を意味するコマンド「ChildAccept」を受信すると変数WaitingAcceptを偽(false)にします。LED画面を点灯を意味するコマンド「ShowLEDsP1」~「ShowLEDsP5」を受信すると、それぞれに応じたパターンでLED画面を点灯します。消灯を意味するコマンド「ClearLEDsP1」でLED画面を消します。また、コマンド「ChildReset」を受信すると、リセットを行います。
6.子機のサンプルプログラム(JavaScript)
子機のサンプルプログラム(Javascript)です。
7.チャレンジ
子機にオリジナルの点灯パターンや消灯パターンを追加して、自分だけのイルミネーションを作ろう。また、LED画面の制御だけでなく、音を鳴らすにはどうすればいいかな?