PR

microbit ボタンの使い方

microbit

マイクロビットのボタンを使ってLEDの表示を切り替えます。

早速ですが、以下のプログラムを作って書き込んでみましょう。

Aを押したときはAと表示され、Bを押した時はBと表示され、A+Bを押したときはABと表示されましたか?

これがボタンの扱い方です。

文字列を表示するブロックは英語もしくは数字だけですからね。日本語は表示できませんから注意してくださいね。

はい、ではボタンのプログラムはこれで終わりです。

って、おーい!

よくあるプログラムの例はこのようになってますが、これは全然ボタンのことをうまく説明できていません。

それに何と言っても退屈なプログラムです。

タテプロくん
タテプロくん

まずは説明できていない理由をこれから紹介していきます。

立プロ

新卒でメーカーに入り、10年間組み込みの現場で設計を行う。
今は個人事業主として自作の組み込み機器開発や、エージェント様に紹介いただき業務委託を行っています。
C,C#,JavaScript, Vue, PHP, VBA, GAS, Kotlinなど、扱う言語が増えゆく日々。

立プロをフォローする

押された時っていつ?

よく考えてみてください、いきますよ。

ボタンAが押されたときにボタンAが押された時ブロックの処理をしますよね。

では、ボタンAが押されている状態で、そのまま続けてボタンBを押したとします。

この時ボタンA+Bと判断してボタンA+Bが押された時ブロックの処理をしますよね。

けどちょっと待ってください、このときの状態をよく見てみて下さい、おかしいと思いませんか?

AもBも押されているから、

ボタンAが押された時ブロックの処理
ボタンBが押された時ブロックの処理
ボタンA+Bが押された時ブロックの処理

この全部の処理をすると思いませんか。

実際に動かしてみましょう、ボタンAとボタンBを押すと、ボタンA+Bの処理だけしますよね。

たしかに、なんかおかしいね!

これどういうことかと言うと。。。

・・・

実はボタンを離した時に処理するんですね!

これはゆっくり操作すると分かります、ボタンAだけを押し続けても何もLED表示されず、その後ボタンAを離すと処理されます。

だからなぜボタンA+Bという処理ができるかというと、ボタンを押した段階では何もしてないのです。

このように、何かの処理を始めるタイミングをトリガと言います。
microbitのボタンは離した時がトリガです。

ユーザビリティ

身の回りのボタンの動きをたしかめてみましょう。

たとえば、家のテレビのリモコンとか、スマホのカメラのボタンとか、今使ってるキーボードとか。

押した時に反応するものと離した時に反応するものがありますね。

こうした違いによって、使い勝手が良かったり悪かったりするものです。

これをユーザビリティと言います。

ユーザビリティを上げる、ユーザビリティが悪いなど、使い勝手を評価するときによく使いますよ。

ボタンで変数を制御する

ボタンを押した回数でもLEDに表示させましょうかね。

以下のようなプログラムを作ってみましょう。

まず、

を選択します。

変数は、データを出し入れできる箱のようなものです。

変数名は「押した回数」にしておきましょうか。

そして次のようなプログラムを作りましょう。

ボタンAが押されたとき、押した回数を1だけ増やす
ボタンBが押されたとき、押した回数を-1だけ増やす
ボタンA+Bが押されたとき、押した回数を0にする

ボタンAを押すと押した回数が1増えて、ボタンBを押すと押した回数が1減ります。A+Bを押すと0にリセットされますね。

数字を減らす場合は、ー1を足す、と考えます。詳細は割愛しますが、2進数の引き算を見てみてください。

またプログラミングするときに、1足すことをインクリメント、1引くことをデクリメントと言いますよ!

課題

以下のプログラムを作ってみてください。

  • 最初に表示する数字は5
  • ボタンAを押すと数字が1つ増える
  • ボタンBを押すと数字が1つ減る
  • ボタンA+Bを押すと数字が5になる
  • LEDに表示する数字は2~8の範囲まで
  • 2を下回る、8を超えるときはブザーを鳴らす(ブザーの鳴らし方は自由)

ヒント:論理->もし真ならブロック、をボタン処理の中で使います

さあ、がんばって作ってみましょ!

完成イメージ↓

まとめ

ボタンは離したときに処理が実行されるんですねえ。

コメント

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