【マイクロビット×MakeCode】おばけをふき飛ばせ!(チュートリアル:Blow Away)

この記事では、MakeCode for micro:bitのチュートリアル「おばけをふき飛ばせ!(Blow Away)」を解説します。

マイクロビットに取りついたオバケをふき飛ばすプログラムを作りながら、

  • マイクロビットのマイクの使い方
  • 好きな場所のLEDを点けたり消したりする方法

を学びます。

※新しいバージョン(V2.0~)用のチュートリアルです。

 

 

スポンサーリンク

チュートリアルを開始する

チュートリアル「Blow Away」をはじめる

MakeCode for micro:bitのホーム画面を開きます。

チュートリアル「Blow Away」を選択し、ブロックの「チュートリアルを開始」をクリックしましょう。

 

やせいの ヘブンが あらわれた!

おばけをLEDに表示する

最初におばけのヘブンをLEDに表示して、マイクロビットに取りついてもらいましょう。

基本カテゴリにある「アイコンを表示」ブロックを出し、「最初だけ」ブロックの中に配置します。

表示するアイコンを「ハート」から「おばけ」に変更しましょう。

 

ループを回す

ずっとブロックの中にくりかえしブロックを入れる

ループカテゴリにある「くりかえし」ブロックを出し、「ずっと」ブロックの中に配置します。

回数は4回のままでOKです。

 

大きな音がきらいなヘブン

ヘブンは大きな音がすると飛んでいってしまいます。

大きな音がしたかどうか判定する命令を入れましょう。

もし<真>ならブロックを出し、くりかえしブロックの中に配置する

論理カテゴリにある「もし<真>なら」ブロックを出し、「くりかえし」ブロックの中に配置します。

論理カテゴリにある「0 = 0」ブロックを出し、「もし<真>なら」ブロックの<真>の部分に配置します。

 

ヘブンがうるさいと感じる条件を設定しましょう。まわり音の大きさと、基準になる値を比較します。

もしまわりの音の大きさが128より大きかったら

入力カテゴリにある「まわりの音の大きさ」ブロックを出し、「0 = 0」ブロックの左側に配置します。

まわりの音の大きさ = 0」ブロックの「=」をクリックして、「>」に変更しましょう。

最後に、まわりの音の大きさ > 0」ブロックの右側の0を128に変更します。

これでもしまわりの音の大きさが128より大きかったらという判定ができました。

「まわりの音の大きさ」ブロック
内臓マイクに入ってきた音量を取得し、0~255の範囲で返します。

 

LEDの座標を保存する変数を作る

変数を2つ作る

LEDの座標を保存するための変数を2つ作ります。

変数とは、プログラムで使う数字や文字のようなデータを一時的に保存するための場所のこと。

よく数字や文字を入れておく箱と言われたりします。

くわしくは「変数とは?スクラッチ(Scratch)を使ってわかりやすく解説」で解説しています。

変数カテゴリを選んで「変数を追加する…」をクリックし、「col」と「row」という名前の変数を作りましょう。

変数「col」にはLEDの横(colはcolumnの略)の位置、変数「row」にはLEDのたて(row)の位置が入ります。

LEDディスプレイの座標位置

マイクロビットのLEDディスプレイの座標

マイクロビットのLEDディスプレイは5×5のライトから構成されていて、X軸方向(横方向)とY軸方向(たて方向)の数値で位置を表しています。

一番左上のLEDの位置は(0,0)、一番右下のLEDの位置は(4,4)と表します。

 

ヘブンがふき飛ばされるアニメーション

ヘブンがふき飛ばされるアニメーションを作りましょう。

まわりの音が大きい(128より大きい)間、LEDディスプレイからランダムな位置のライトを選んで右に移動させることをくり返します。

LEDディスプレイからランダムな位置のライトを選ぶ

まずは、LEDディスプレイからランダムな位置のライトを選びましょう。

LEDディスプレイからランダムな位置のライトを選ぶ

変数カテゴリにある「row を 0 にする」ブロックを出し、「もしまわりの音の大きさが128より大きかったら」ブロックの中に配置します。

計算カテゴリから「0 から 10 までの乱数」ブロックを出し、「row を 0 にする」ブロックの0の場所に配置します。

「0 から 10 までの乱数」ブロックの最大値を10から4に変更しましょう。

同じように、colも0~4のランダムな値を設定するようにします。

ランダムに選んだ位置のライトが点灯しているなら

次に、ランダムに選んだ位置のライトが点灯しているか判定します。

ランダムに選んだ位置のライトが点灯しているか判定

論理カテゴリにある「もし<真>なら」ブロックを出し、「もしまわりの音の大きさが128より大きかったら」ブロックの下に配置します。

LEDカテゴリにある「LED x 0 y 0 が点灯している」を出し、「もし<真>なら」ブロックの<真>の部分に配置します。

x軸の0に変数「col」、y軸の0に変数「row」を配置します。

これでランダムに選んだ位置のライトが点灯しているならという判定ができました。

点灯しているライトを右に移動させる

点灯しているライトを消し1つ右のライトを点灯させることで、右に移動させます。

LEDカテゴリにある「消灯 x 0 y 0」ブロックと「点灯 x 0 y 0」ブロックを出し、「もしLED x col y row が点灯しているなら」ブロックの中に配置します。

「消灯 x 0 y 0」ブロックと「点灯 x 0 y 0」ブロックのx軸とy軸にも、変数「col」と変数「row」をそれぞれ配置しましょう。

このままだと同じ場所のライトを消して点けているだけになってしまうので、消灯したライトより1つ右のライトを点灯させます。

点灯しているライトより1つ右のライトを点灯

計算カテゴリから「0 + 0」ブロックを出し、「点灯 x col y row」ブロックの「col」と置きかえます。その時、プログラミングエリアにグレーアウトした「col」が出てきます。

見つからない場合は「ずっと」ブロックをドラッグして動かして、後ろにかくれているか探してみてくださいね。

グレーアウトした「col」は、「 0 + 0 」ブロックの左側に入れましょう。

右側の0は1に変更します。

これで「点灯 x col+1 y row」になり、ランダムに選んだ位置よりひとつ右側のLEDの場所を点灯する命令になります。

 

  • 「LED x 0 y 0 が点灯している」ブロック
    X、Y座標で指定された位置のLEDの状態を返します。
    点灯している時は「真」、消灯している場合は「偽」を返します。
     
  • 「消灯 x 0 y 0」ブロック
    X、Y座標で指定した位置のLEDを消灯します。
     
  • 「点灯 x 0 y 0」ブロック
    X、Y座標で指定した位置のLEDを点灯します。

 

なぜ「ずっと」ブロックの中に「くりかえし」ブロックを入れるの?

これでプログラムは完成です。

しかしなぜ「ずっと」ブロックの中に、わざわざ「くりかえし」ブロックを入れるのでしょう?

一見意味がないように感じますよね。

なぜかというと「ずっと」ブロックには多少のおくれが発生するからです。

「くりかえし」ブロックを使うことで、コードがスピードアップしておくれをさけることができます。

 

シミュレーターで確認する

シミュレーターで確認

シミュレーターで作ったプログラムを試してみましょう。

マイクのアイコンの下にあるバーを上下にドラッグすると、まわりの音の大きさを調節することができます。

128より大きくしてみましょう。

ヘブンは右へふき飛んでいきましたか?

 

マイクロビットにプログラムを転送する

シミュレーターで正しく動くことを確認できたらマイクロビットに転送して動かしてみましょう。

USBケーブルでマイクロビットとパソコンをつなぎ、画面左下にある「ダウンロード」ボタンをクリックします。

マイクロビットに息をふきかけて、ヘブンがふき飛ぶのを見てみましょう。

マイクロビット裏面のリセットボタンをおすと、ヘブンを復活させることができますよ。

 

まとめ

チュートリアル「おばけをふき飛ばせ!(Blow Away)」について紹介しました。

今回使用したブロック

  • 「まわりの音の大きさ」ブロック
    内臓マイクに入ってきた音量を取得し、0~255の範囲で返します。
     
  • 「LED x 0 y 0 が点灯している」ブロック
    X、Y座標で指定された位置のLEDの状態を返します。
    点灯している時は「真」、消灯している場合は「偽」を返します。
     
  • 「消灯 x 0 y 0」ブロック
    X、Y座標で指定した位置のLEDを消灯します。
     
  • 「点灯 x 0 y 0」ブロック
    X、Y座標で指定した位置のLEDを点灯します。

 

下の記事でマイクの機能についてくわしく解説しているので、よかったら読んでみてください。

 

タイトルとURLをコピーしました