以前レビューした「F503i」には数字と記号のキーが12個ついており、それぞれキーを押すことができます。
- 【小学8年生|F503i】キー入力の使い方【ボタンを押す】
12個のキーはそれぞれ押されたかどうかチェックすることができます。
なので、1と4が同時に押されたら音を鳴らすとかできますよ。
【小学8年生|F503i】キー入力の使い方【ボタンを押す】
F503iには数字キー0~9と記号キー*、#の全12キーがあります。押したら自動で戻るタイプのボタンです。
キー入力を使ってできること
キー入力を使うと下記のようなことができます。
- 特定の数字を押したら音を鳴らす
- キーを押すたびにLEDを点けたり消したりする
- キーを押されるまでプログラムを止める
上記のとおりです。ぜひ、使い方をマスターしましょう!
キー入力の仕様
そもそもキー入力でどういう情報を取得できるのかというと下記の通りです。
- 0:押されてない
- 1:押されてる
このキーでは、それぞれのキーが押されたのか押されてないのかがわかります。つまり、キーが押されてる間は1になり、キーが押されてない間は0になります。
キー入力の状態を取得
右端の「キー入力」をタップすると接続しているF503iの「0キー」の値が表示されます。それ以外のキーの状態はこの方法では取得できません。
キー入力の状態を表示
ログ機能を使うと取得したキーの状態をアプリの画面に表示することができます。これを使えば、0キー以外のキーの状態も表示することができます。
プログラムはこんな感じです。「◯をログに出力」ブロックの命令が実行されると左下のlog画面にログが表示されます。
「キー入力」の使い方例① ~waitを使う場合~
キーが押されたら動き出すプログラム例です。
3キーが押されてない間は何もせず、3キーが押されたらLEDを3つとも点灯させます。(LEDの使い方はこちら)
実行結果は下記のとおりです。
プログラムのポイントはwait命令を使うことです。wait命令は条件式を満たすまで何もせず、条件式を満たすと続きの処理を実行します。
そして、ボタンの状態は0か1なので、
とすると、3キーが押された場合に続きの処理(function1)を実行します。
「キー入力」の使い方例② ~ifを使う場合~
次はキーの状態に応じて動作が変わるプログラム例です。
6キーが押されたらLEDを3つとも点灯させ、6キーが押されてないならLEDを3つとも消灯させます。
実行結果は下記のとおりです。
プログラムのポイントはifの条件式です。キーの状態は0か1なので、
とすると、6キーが押された場合に◯側の処理(function1)を実行します。
ちなみに、数の代わりに「ON/OFF」も使えます。
実は、アプリの内部的には
- OFF = 0
- ON = 1
なんです。なので、わかりやすい方を使用してください。
「キー入力」の使い方例③ ~whileを使う場合~
次はキーの状態をチェックし続けるプログラム例です。
使い方例②のプログラムだとプログラムを実行するとすぐに終わってしまうので、繰り返し動作するようにします。
そして実行結果は下記のとおりです。
ポイントはwhileの条件式です。whileは条件式を満たす間は処理を繰り返す命令なので、条件式を
とすると常に条件式を満たし、必ずこのwhileの中は実行されます。このように無限に処理が繰り返されることを無限ループといいます。
「キー入力」の使い方例④ ~whileとwaitを使う場合~
実は使い方例③のプログラムには問題がありまして、1回しかキーを押してないのに複数回押されたことになる場合があります。
これはログ機能を使うとわかりやすいです。function1(キーが押された場合のルート)にログ(一番下)を仕込んでみます。
そして実行するとこんな感じで、1回しかキーを押してないのにログが複数回出力されます。これはwhileの処理が速すぎて1回しか押してないのに複数回ログが表示されるからです。
動画版です↓
なので、キーを押したあとに離されるまで待ってから次の処理に移るように改良します。
これなら、キーを押した回数が正しく判定されます。
まとめ
本記事のおさらいです。
- キーの値は「0:押されてない、1:押されてる」の2値
- 0キーの状態は右端のセンサー名をタップすると表示される
- ログ機能を使うと全キーの状態を表示できる
- キー入力を活用するにはif文とwait文がある
- while文の条件式を1=1などにすると無限ループになる
- キー押下の判定をしたあとに離れるまで待つと回数をカウントできる
上記のとおりです。
他の使い方
他の使い方は下記の記事にまとめています。
それでは、F503iを楽しんでください(^_^)/~