![見出し画像](https://assets.st-note.com/production/uploads/images/116078594/rectangle_large_type_2_ff8737b71fedc59a48ca77639ff242d9.png?width=1200)
micro:bit端子への接触を感知する機能と反応時間の測定
こんにちは rock204チャンネルです。 このチャンネルではit初心者のための動画を配信しています。
今回のタイトルは 「マイクロビット端子への接触を感知する機能と反応時間の測定」です。
動画の内容は
・端子に接触されたことを感知するブロック
・端子への接触を感知するブロックの使用例
・反応時間測定プログラムの作成
・シュミレーターとマイクロビットでの確認 について解説します。
前回の動画では 電子回路などで使用されているような明確な電流の流れを測定する「アナログ値を読み取る」ブロックを使用してきました。
今回扱うのは、端子に接触されたかを感知するブロックです。
右の図のように入力カテゴリー内には
「端子P0が短くタップされたとき」 と「端子P0がタッチされている」の二つのブロックがあります。
この二つのブロックは微小な電気の流れを感知するものです。
人間の皮膚上には微小な電気が発生していることが分っています。
この微小な電気をマイクロビットの端子P0とGND端子間で回路を作ることにより微小な電流を検知します。
![](https://assets.st-note.com/img/1694595121242-wfdktNJEnG.png?width=1200)
ここに端子への接触を感知するブロックの使用例を示します。
左のプログラムは 「端子P0が短くタップされたとき」 ハートの マークを表示した後すぐに表示を消すプログラムです。
タップされるごとにハートのマークが表示されます。
右の図は 「ずっと」ブロックの中に 論理式として 端子P0がタッチされているかを判断しタッチされている場合はハートマーク 、そうでない場合はバツマークを表示します。
このブロックの使い分けとしては、 短い時間でタッチされたことを感知するのが 左の「端子P0が短くタップされたとき」ブロックです。
それに対して、タッチされているかどうかの状態を判別するのが「端子P0がタッチされている」ことを参照するブロックになります。
![](https://assets.st-note.com/img/1694595229793-EIklPzBTj2.png?width=1200)
![](https://assets.st-note.com/img/1694595259640-huPARMg9RG.png?width=1200)
![](https://assets.st-note.com/img/1694595311406-6MP24oMHz2.png?width=1200)
反応時間測定プログラムの概要について見ていきましょう。
まずAボタンが押されると 測定が開始されますが、まだ測定が開始されない状態では変数 modeを999と設定します。
Aボタンが押されるとmodeは1となります。
そして四角マークが マイクロビットに表示されます。
その後LEDは表示が消えmodeを2とし、しばらくすると ハートマークが表示されます。
ここではmodeを3とします
そして、これに反応して 被験者は端子に触れます。触れるとmodeが4となります。
反応時間は ハートマークが表示され端子に触れるまでの間を取得します。
そして最後に反応時間をLEDに表示しmodeを準備状態の999とします。
![](https://assets.st-note.com/img/1694595459926-CKD78lMmTU.png?width=1200)
それでは具体的なプログラムを見て行きましょう。
プログラム開始から測定開始表示までの区間です。
「最初だけ」ブロックに 文字列表示" rt pro"と表示されます。
rtというのはリアクションタイム反応時間のことです。 またproというのはプログラムの略になります。
そしてmodeを999にします。これは測定の準備段階であることを示します。
そして「Aボタンが押されたとき」 アイコン表示して四角を表示しmodeを1とします。
![](https://assets.st-note.com/img/1694595565593-dHyqMfkdbz.png?width=1200)
この図は「ずっと」ブロックによる 全体監視ブロックを 示しています。
「ずっと」ブロック内の「もし」ブロックで modeが999でない場合のみ その内側のmodeを1の場合とモード2の場合の条件に合致したプログラムが実行されます。
mode=1 が成立する場合は 関数{junbi} を呼び出しmode=2が成立する場合は {taiki}関数を呼び出します。
![](https://assets.st-note.com/img/1694595694859-gQZM1O2xix.png?width=1200)
mode=1の場合は 関数{junbi}を呼び出します。
ここではmode=1になる前はLEDに四角が表示されています。一時停止で1秒間この状態を継続した後、表示を消してmodeを2とします。
![](https://assets.st-note.com/img/1694595805365-1xDKvqrB7f.png?width=1200)
modeが2においては 関数{taiki}が実行されます。
ここでは 一時停止が1秒から5秒の間でおこなわれます。
そしてmodeを3とします。
変数st_timeにその時の稼働時間を取得します。これが反応時間測定の起点となります。
その後、 ハートマークを表示し反応を促します。
![](https://assets.st-note.com/img/1694595891044-bHytPvFIf1.png?width=1200)
ハートマークが表示され、タッチした後、反応時間を表示するまでを示します。「端子P0が短くタップされたとき」の中に 「もし」ブロックでモードが三であるかを判断し正しければモード4に切り替え
次の行で 変数rtに現在の稼働時間からst_timeを 引き1000で割り秒に変換し反応時間を求めます。
そして表示を消し、 反応時間をLEDに表示します。
最後にmodeを999にして準備状態に復帰させます。
![](https://assets.st-note.com/img/1694595987924-PJUdQZcj5R.png?width=1200)
今回は端子の接触を感知するブロックを応用した反応時間プログラムを紹介しました。
その中で重要と思われたことを挙げると。
端子に接触されたことを感知するブロックには、短いタップを感知するものと接触しているかを感知するものがありますが、プログラムの目的により選択していくことが大切と思われます。
反応時間測定プログラムにおいては、迅速な反応に対応する必要性よりタップを感知するブロックを使用しました。
ご視聴ありがとうございました。
この記事の資料は下記よりダウンロードできます。
下記のリンクはここで作成したプロジェクトとなります。