モード切替機能のつくり方

2020年3月号では、探検ウォッチに時計機能を追加したね。でも、時刻を確認するだけじゃなくて、いろいろな機能を切り替えて使ってみたい。そこで、モード機能をつくろう。モードは、micro:bitのボタンの押し方によって機能を切り替えていくものだ。今回はモード0から3までの4つのモードをつくる。

それぞれのモードの設定と、モードの切り替え方は以下のようになるよ。

探検ウォッチのモード一覧

モード名 時刻設定 時計機能 タイマー 今は機能なし
モード変数 モード=0 モード=1 モード=2 モード=3
動作説明 時刻を設定できる。
Aボタンで時が増える
Bボタンで分が増える
A+Bボタンで時計機能に戻る
傾けて画面を見ると時刻が表示される

ボタンAでタイマーになる
ボタンBでモード3
ボタンA+Bで時刻設定
3分を計測できる。Aボタンを押すとスタート

A+Bで時計機能に戻る
機能はない
「Make your own function(独自の機能をつくろう)」の表示のみ
コード:条件 <モード=0>のとき <モード=1>のとき <モード=2>のとき <モード=3>のとき
ボタンAが押されたとき 時間の数値が増える タイマー機能に切り替える タイマースタート 特になし
ボタンBが押されたとき 分の数値が増える モード3に切り替える 特になし 特になし
ボタンA+Bが押されたとき 時計の機能に戻る 時刻設定に切り替える 時計機能に戻る 時計機能に戻る
ロゴが上を向いたとき 特になし 時刻を表示 特になし 特になし

①micro:bitを傾ける(“ロゴが上になったとき”)に時刻を表示(モード=1)
②モード=1の時にボタンAとBを一緒に押すと時刻を設定できる(モード=0)
③モード=0の時にボタンAとBを一緒に押すとモード=1に戻る(時刻を設定したらモード=1に戻ろう)
④モード=1の時にボタンAを押すと3分間測れるタイマーになる(モード=2)
⑤モード=2の時にボタンAとBを一緒に押すと、モード=1に戻る
⑥モード=1の時にボタンBを押すとモード=3になる
⑦モード=3の時にボタンAとBを一緒に押すとモード=1に戻る

「モード=3」はなにも機能を入れていないので、ボタンを押すと「Make your own function」と表示されるだけだ。ここにはキミのオリジナルの機能をつくってみてほしい。

モードをプログラムで扱うために「変数」カテゴリーで新しく変数「モード」をつくる。モードを変えるときには、「変数“モード”を“0”にする」ブロックで、“0”をそれぞれの番号にするといい。

モード切替機能のつくり方

モード切替機能のプログラムは以下で公開している。下の画面を右クリックして表示される「新しいウィンドウ」を選択すると、新しいウィンドウでMakeCodeの画面が開くよ。

モードを切り替えるプログラムをつくるときは、”ボタンAが押されたときモードはいくつか確認する”のように考えるといいだろう。上で説明したモードの切り替え方を参考にして、ボタンAが押されたときのモードにより、どのモードに切り替わるかをプログラミングしたのが下のプログラムだ。モード=3のときのプログラムは何もないので、ここではとりあえずボタンAが押されたらモード=1に戻るようにした。モード=3のプログラムをつくったときに、内容に応じて変更してね。

モード切替機能のつくり方

モード=0のときにボタンAを押せば「時」が設定できる。「時」の設定は関数「(時)を増やす」ブロックを新しくつくって、関数にしているよ。「ボタン“A”が押されたとき」ブロックで呼び出している。

モード切替機能のつくり方

探検ウォッチの機能を増やしていくと、プログラムはどんどん複雑になっていく。関数にしてプログラム内で参照することで、できるだけ短くて、わかりやすいプログラムしている(関数については2020年2月号を参考にしてね)。
このプログラムはモード=3に機能は何もないのは上で説明した通りだ。キミのオリジナル機能をつくってみよう!