マイクロビットを使ってみる 〜ピンボールゲーム 4(改良版)

スポンサーリンク
電子工作の作例

先日、マイクロビットをつかって「ピンボールゲーム」をつくりました(記事は こちら)。


フォトインタラプタをつかって「ターゲット」をつくり、ビー玉が当たってターゲットが回ると点数が増えるゲームです。
マイクロビットでは、「ゲームの開始・終了の管理」「ターゲットが回った時に音を鳴らして点数を増やす処理」などを行っています。
ピンボール台の本体は、百円ショップで販売されているパンチングボードや木材の端材をつかって、木工工作でつくっています。
また、マイクロビットとフォトインタラプタをつなぐために「モータードライバー拡張ボード(KS4033)」を使っています。


さて、このピンボールゲームは、小学生向けのプログラミングワークショップの題材としてつくったものなのですが、ワークショップに参加した受講生よりいくつか要望が挙がりました。
ここではそれらについて紹介したいと思います。

フルカラーLEDを追加

別の回のワークショップでは、マイクロビットで「フルカラーLED」の点灯を制御する方法を紹介していました。
受講生から、この「フルカラーLED」をピンボールゲームと組み合わせ、ターゲットが回った時に、音が鳴るだけではなく、フルカラーLEDが激しく光るように改良したいとの要望がありました。

それを踏まえて改良したプログラムはこちらです。

今回つかっているのは、7灯のフルカラーLEDリングです。


フルカラーLEDは「P2」に、フォトインタラプタは「P14」につなぎます。

「色設定1」という関数で、普段のLED点灯色を設定しています。普段は青系のグラデーションで点灯するような色設定になっています。

このプログラムでは「ずっと」ブロックがふたつ使われています。
フルカラーLEDの制御は、主に下の方の「ずっと」ブロックで行っています。
「ゲーム中(ゲームステータスが1)」のみフルカラーLEDが点灯します。ゲーム中はフルカラーLEDが青系グラデーションで点灯し、点灯色は0.1秒毎にとなりのLEDにずれていきます。
ターゲットが回ると「LEDフラグ」が1になるのですが、「LEDフラグが1」のとき、フルカラーLEDはレインボーカラーで3回点灯し、その後「LEDフラグを0」にして通常状態に戻ります。

これにより、

  • ゲーム中は、フルカラーLEDが青系のグラデーションでくるくる回っている。
  • ゲーム中にターゲットが回ると、音が鳴るのと同時にフルカラーLEDが派手に点滅する。

という機能が実現できます。

7セグメントLEDモジュールで点数表示

元々のプログラムでは、マイクロビットの5×5 LEDマトリクスで点数を表示していましたが、「whaleysansフォント」を使って2桁で点数表示するようにしてもやはり見にくいので、点数表示専用に4桁の「7セグメントLEDモジュール」を使うことにしました。
今回つかっている「7セグメントLEDモジュール」はこちらです。


ついでに、フォトインタラプタをつかったターゲットも、ひとつからふたつに増やしました。

プログラムはこちらです。

7セグメントLEDモジュールのCLK端子、DIO端子を「P15」「P16」に、ふたつのターゲット(フォトインタラプタ)はそれぞれ「P1」「P2」につなぎます。
7セグメントLEDモジュールを制御するために「GROVE拡張機能」をつかっています。

元々のプログラムで、5×5 LEDマトリクスに点数を表示していた箇所を、7セグメントLEDモジュールで表示するように変更しました。
5×5 LEDマトリクスが空くので、ここにゲームの残り時間を「棒グラフ」形式で表示するようにしました。
ターゲットが回った時の処理は「端子 Px に正パルスが入力されたとき」で行います。ふたつめのターゲットの処理もひとつめと同じですが、回った時の音だけ別にしました。どちらのターゲットが回るかによって音も変わるので、これまでのものよりもさらに賑やかになります。

これにより、

  • 点数は7セグメントLEDモジュールに表示される。
  • ゲームの残り時間がマイクロビットのLEDマトリクスに表示される。

という機能が実現できます。

 

なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。