【マイクロビット×MakeCode】クラップライト(チュートリアル:Clap Lights)

この記事では、MakeCode for micro:bitのチュートリアル「クラップライト(Clap Lights)」を解説かいせつします。

Clapは英語えいごで「たたく、うつ」という意味。

今回は、マイクロビットについているマイクを使って、手をたたいた音でLEDを点灯てんとう・消灯しょうとうさせるプログラムを作ります。

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

 

スポンサーリンク

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

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

チュートリアル「Clap Lights」を選択せんたくし、ブロックの「チュートリアルを開始」をクリックしましょう。

Clap Lightsを開始する

 

不要なブロックを消す

「最初さいしょだけ」ブロックは今回使わないので消しましょう。

最初だけブロックを消す

 

まわりの音がうるさくなったとき

手をたたいて、マイクが音を感知したときの処理しょりを作りましょう。

入力カテゴリにある「まわりの音がうるさくなったとき」ブロックを配置はいちします。

まわりの音がうるさくなったとき

「まわりの音がうるさくなったとき」ブロック
「うるさいかどうか」のしきい値ち以上いじょうの音量おんりょうを感知したとき、中にあるプログラムを実行します。

 

変数「lightsOn」を作成する

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

変数「lightsOn」を作成

変数へんすうとは、プログラムで使う数字や文字のようなデータを一時的いちじてきに保存ほぞんするための場所のことです。よく数字や文字を入れておく箱と言われたりします。

変数へんすうについて「変数へんすうとは?スクラッチ(Scratch)を使って解説かいせつ」でくわしく解説かいせつしています。

 

「lightsOn」はLEDが点灯しているか記録する変数

変数へんすう「lightsOn」は、LEDが「点灯てんとうしているか」または「消灯しょうとうしているか」記録きろくする役割やくわりがあります。

  • 点灯てんとうしている場合は「真(しん)」
  • 消灯しょうとうしている場合は「偽(ぎ)」

真なら点灯、偽なら消灯

そもそも真しんと偽ぎって何?ってことですが、カンタンに言うと

  • 真しんはそうだよ
  • 偽ぎはちがうよ

という意味です。英語えいごで、真しんはtrue、偽にせはfalseと表現ひょうげんされます。

真偽しんぎ値ちについては「論理ろんり演算えんざん(かつ・または・ではない)とは?スクラッチ(Scratch)を使って解説かいせつ」でくわしく解説かいせつしています。

 

点灯している?消灯している?

変数へんすう「lightsOn」の値あたいが真か偽ぎかで処理しょりが分かれます。

  • 変数へんすう「lightsOn」の値あたいが真 → LEDを点灯てんとう
  • 変数へんすう「lightsOn」の値あたいが偽ぎ → LEDを消灯しょうとう

論理ろんりカテゴリの「もし<真>なら/でなければ」ブロックを出し、「まわりの音がうるさくなったとき」ブロックの中に配置はいちします。

変数へんすうカテゴリの変数へんすう「lightsOn」を出し、「もし<真>なら/でなければ」ブロックの<真>の部分に配置はいちします。

変数「lightsOn」が真なら

「もし lightsOn なら」という条件じょうけんにピンとこないかもしれません。

これは「変数へんすう「lightsOn」が真なら」と同じ意味です。

「もし<真>なら/でなければ」ブロックは、もし条件じょうけんが真の場合は「なら」の下にある命令めいれいを実行し、偽ぎの場合は「でなければ」の下にある命令めいれいを実行します。

なので、変数へんすう「lightsOn」の値あたいが真の場合、「なら」の下にある命令めいれいが実行されます。

 

変数「lightsOn」が真なら

変数へんすう「lightsOn」が真なら、LEDを点灯てんとうします。

基本きほんカテゴリから「LED画面に表示ひょうじ」ブロックを出し、「もし lightsOn なら/でなければ」ブロックの「もし lightsOn なら」の下に配置はいちします。

LEDは自由にデザインしましょう!

lightsOnが真なら、LEDを点灯

 

変数「lightsOn」が真でなければ

変数へんすう「lightsOn」が偽ぎなら、LEDを消灯しょうとうします。

基本きほんカテゴリから「表示ひょうじを消す」ブロックを出し、「もし lightsOn なら/でなければ」ブロックの「でなければ」の下に配置はいちします。

lightsOnが偽なら、LEDを消灯

 

変数「lightsOn」の値を逆にする

手をたたいてマイクが音を感知するたびに、変数へんすう「lightsOn」を逆ぎゃくの値あたい(真⇔偽ぎ)にします。

変数へんすうカテゴリから「変数へんすう lightOn を 0 にする」ブロック出し、「もし lightsOn なら/でなければ」ブロックの上に配置はいちします。

論理ろんりカテゴリから「ではない」ブロックを出し、「変数へんすう lightOn を 0 にする」ブロックの 0 の部分に配置はいちしましょう。

変数へんすうカテゴリから変数へんすう「lightsOn」ブロックを出し、「ではない」ブロックの空いている部分に配置はいちします。

lightsOnを逆の値にする

「~ではない」ブロック
入力が真なら偽ぎ、偽ぎなら真を返します。

 

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

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

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

LEDの右に出てきた音量おんりょうのコントローラーを上下にドラッグすることで、音量おんりょうを上げ下げできます。

音量おんりょうを上げてみてください。ある値あたい以上いじょうになると、LEDがついたり消えたりするはずです。

チュートリアルの説明せつめいでは128以上いじょうとなっていますが、165以上いじょうにするとLEDが点灯てんとう・消灯しょうとうします。

 

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

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

マイクロビットにプログラムを転送する方法ほうほうは「【マイクロビット】パソコンとのつなぎ方・外し方、プログラムの転送方法ほうほう」でくわしく紹介しょうかいしています。

 

しきい値を調整する

マイクロビットに転送して動かしてみてると、手をたたいてないのにマイクが音を感知してしまったり、反対に手をたたいても音を感知してくれなかったりするかもしれません。

そんな時は、音のしきい値ちを調整しましょう。

入力の下にあるその他カテゴリにある「うるさいかどうかのしきい値ちを128に設定せっていする」ブロックは、「うるさいかどうか」のしきい値ちを設定せっていするブロックです。

しきい値を設定する

しきい値ちとは、さかい目になる値あたいのこと。まわりの音の大きさがしきい値ち以上いじょうの場合は「うるさい」と判断はんだんします。

何も設定せっていしなかった場合、しきい値ちは165になっています。

しきい値ちを小さくすると、小さな音でも感知するようになり、しきい値ちを大きくすると、大きな音をたてないと感知しないようになります。

試行錯誤しこうさくごしながら、ちょうどいい値あたいをさがしてみてくださいね。

 

変数「lightsOn」には、最初何の値が入っている?

プログラムはこれで完成かんせいですが、ここで問題です。

変数へんすう「lightsOn」には、最初さいしょ何の値あたいが入っているでしょう?

一番最初さいしょに音を感知した時「変数へんすう lightsOn を lightsOn ではない にする」ブロックで、変数へんすう「lightsOn」が何から何に変かわっているのか気になりませんか?

 

「エディター切きり替かえ」ボタンで、プログラムの表示ひょうじをブロックからJavaScriptに切りかえてみてください。

そうすると、ブロックで作ったプログラムがJavaScriptというプログラミング言語で表示ひょうじされます。

変数「lightsOn」には、最初何の値が入っている?

その中に、

let lightsOn = false

という命令めいれいがあります。

これは、lightsOn という変数へんすうを作って false(偽ぎ)を設定せっていしなさいという命令めいれいです。

よって、変数へんすう「lightsOn」には最初さいしょ「偽ぎ」が設定せっていされていることが分かります。

 

変数へんすうは最初さいしょ何が入っているか分かりません。使用する前に値あたいを入れて初期化しょきかする必要ひつようがあります。

ブロックでプログラミングしていると変数へんすうに最初さいしょ何が入っているのか分かりにくいです。

変数へんすうにどんな値あたいが入っているのか意識いしきするようにしましょう。

 

まとめ

チュートリアル「クラップライト(Clap Lights)」について紹介しょうかいしました。

今回使用したブロック

  • 「まわりの音がうるさくなったとき」ブロック
    「うるさいかどうか」のしきい値ち以上いじょうの音量おんりょうを感知したとき、中にあるプログラムを実行します。
     
  • 「~ではない」ブロック
    入力が真なら偽ぎ、偽ぎなら真を返します。
     
  • 「うるさいかどうかのしきい値ちを128に設定せっていする」ブロック
    「うるさいかどうか」判断はんだんするしきい値ちを設定せっていする。

 

下の記事で、マイクの機能きのうについてくわしく解説かいせつしています。興味きょうみがあったら読んでみてください。

 

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