micro:bitプログラミング(13) 3分間タイマーを作ろう

3分間タイマーを作ろう

今日はmicro:bit(マイクロビット)を使って、3分間で音が鳴るタイマーを作ります。
もちろん今回も全てシミュレーターで実行できますので、無料でお試しできます?
実機を買うのは、遊び方や使い方を覚えてからでも遅くないですよ?

まずはいつものURLにアクセスしてください!
https://makecode.microbit.org/#lang=ja

3分間キッチンタイマー

まずはこんな↓簡単なキッチンタイマーを作ってみましょう。

Aボタンが押されたらその時間から計測を開始し、3分経ったら音を鳴らす。

Aボタンが押されたら

まずは「Aボタンが押されたとき」を追加しましょう。

この回で勉強しましたね。

「入力」から「ボタン[A▼]が押されたとき」を追加します。

ボタン[A▼]が押されたとき

ボタン[A▼]が押されたとき

時間を計測

さて、ここから時間を計測する命令を作っていきます。

時間の計測には「変数」と「稼働時間(ミリ秒)」を使います。

3分は何ミリ秒?

まず、3分間が何ミリ秒か求めてみましょう。

1ミリ秒は1/1000秒なので、1000ミリ秒=1秒となります。

では、3分は何ミリ秒でしょうか???

ミリ秒
0 1 1000
0 10 10000
1 60 60000
2 120 120000
3 180 180000

180000ミリ秒ですね♪

稼働時間を使おう

さて、3分間=180000ミリ秒だと分かりました。

micro:bitには「稼働時間(ミリ秒)」という命令ブロックがあります。これは「micro:bitが起動してから何ミリ秒たったか」という値を返してくれるブロックです。

これを上手に使って180000ミリ秒を数えてみましょう。

具体的には次にようにします。

  • 変数timeを作る
  • 変数timeに稼働時間(ミリ秒)を入れる
  • 稼働時間(ミリ秒)変数time が180000ミリ秒を超えていたら3分経ったと判定する

分かりますか??

念のため図にしますね。こんな感じです。

稼働時間を使って3分を計測

稼働時間を使って3分を計測

変数timeを作ろう

それでは命令を作っていきます。

まずは「変数」から「変数を追加する…」をクリックしてください。

「変数」から「変数を追加する...」をクリック

「変数」から「変数を追加する…」をクリック

出てきたダイアログにtimeと入力し、OKボタンを押しましょう。

変数「time」を追加する

変数「time」を追加する

正しく追加されましたね。

こんな風になります

こんな風になります

計算式を作ろう

追加した変数「time」と「稼働時間(ミリ秒)」を計算して、180000を超えたかどうかを判定する式を作ります。

  1. 「変数」から「time」をクリックしましょう。
  2. 「入力」→「その他」→「稼働時間(ミリ秒)」をクリックしてください。
  3. 「計算」→「(0) – (0)」をクリックしてください。
  4. 稼働時間を左の(0)に入れてください。
  5. timeを右の(0)に入れてください。

こんな風になりました♪

稼働時間からtimeを引く計算

稼働時間からtimeを引く計算

比べよう

次にこの計算式の結果が180000ミリ秒を超えているかどうか比べる式を作ります。

「論理」→「くらべる」→「(0) [<▼] (0)」をクリックしましょう。

左の(0)に先ほどの計算式を、右の(0)に180000を入力してください。

こんな風になればOKですよ。

くらべる式

くらべる式

比べ続ける

さて、これで3分間を図ることができる式が完成しました。でも、これだけだとダメなんですね?

なぜかというとこの式だけではずっと比べ続けることができないからなんです。

3分間を計るということは、稼働時間の間ずっとこの式を比べ続ける必要があります。

なので、次はずっと比べ続けられるようにしましょう。

  • 「論理」から「ずっと<真▼>なら」をクリックします。
  • 先ほどの比べる式を<真▼>の中に入れます。
比べ続ける命令

比べ続ける命令

上と同じようになりましたか?

この時、「もし〜」のには何も命令を入れません。3分以内なら何もしないので、当然ですね。

さて、命令が完成したら次へ進みましょう。

timeを初期化しよう

次に、Aボタンが押された場合にtimeに稼働時間を入れるようにしましょう。

変数「time」はまだ数字が入っていません。

変数は「宣言(変数を作ること)」しただけではダメで、その中に最初の数字を入れる必要があります。

この最初の数字を入れることを「初期化(しょきか)」と呼びます。

では、初期化してみましょう。

  • 「変数」から「変数[time▼]を(0)にする」をクリックします
  • 「入力」→「その他」→「稼働時間(ミリ秒)」をクリックします
  • (0)の中に「稼働時間(ミリ秒)」を入れます

こんな風になります。

変数timeを初期化する

変数timeを初期化する

これを一番最初に出した「ボタン[A▼]が押されたとき」の中に入れます。

ボタンAが押されたら変数timeを稼働時間で初期化する

ボタンAが押されたら変数timeを稼働時間で初期化する

できましたね?

比べる式を中に入れよう

上の式の中に先ほど作った継続して比べる式を入れましょう。

式を合体させよう

式を合体させよう

これで「Aボタンが押されたら3分計測する」命令ができました‼️

あと一歩ですよ✨

音を鳴らそう

最後に、3分経ったら音を鳴らすようにしましょう。

  • 「音楽」から「音を鳴らす 高さ(Hz) (真ん中のド▼) 長さ(1▼ 拍)」をクリックします
  • 「もし〜」ブロックのにそれを入れます
完成した式

完成した式

おめでとうございます?

これで「Aボタンが押されたら3分測って音を鳴らす」命令の完成です‼️?

やってみよう

では、実際にボタンを押してみましょう!

3分後に音がなればOKです!

もし鳴らない場合は上の図とご自分のプログラムを見比べてくださいね。

あ❗️それと、パソコンから音が出る設定になっているかどうかちゃんと確認してくださいね?

たまにイヤホンが挿さっていたり、音量が最小になっていたりして聞こえないことがありますので?

追記

うーーん。。。?

どうもシミュレーターで音が鳴らないバグがあるっぽいですね?

一応、解決策として試しに音を鳴らしてから実行するとちゃんと音がなるようです。

  • 「入力」から「端子[P0▼]がタッチされたとき」をクリック
  • 「音楽」から「音を鳴らす 高さ(Hz) (真ん中のド)」をクリック
  • 「音を鳴らす〜」を「端子〜」の中に入れます
試しに音を鳴らす

試しに音を鳴らす

こんな感じのブロックを作り、シミュレーターの端子0をタッチしてみましょう。

正しく音がなったら、この命令ブロックは削除してくださいね。

これでタイマーの方の音も正しく鳴るはずです。試してみてください?

最後に

これで3分間タイマーが完成しました!

簡単でしたね?

でも、これだと…3分間しか測れません?

次回は、自分で決めた時間を測れるように改良してみましょう?

コメント