見出し画像

デジタル入出力を利用した反応時間の測定-1

今日はrock204チャンネルです。
このチャンネルへはIT初心者のための動画を配信しています。
 今回はマイクロビット応用講座「デジタル入出力を利用した反応時間の測定-1」をお送りします。
この動画の内容
 今回はmicro:bitのデジタル入出力を行う命令を使用し、反応時間の測定プログラムを作成しました。
また用いた回路は「micro:bitのデジタル入出力」のものを用い、プログラムは以前投稿した「micro:bit端子への接触を感知する機能と反応時間の測定」 で紹介したプログラムを元にして作成しました。

今回の反応時間測定に用いた回路を示します。
P0端子にLEDを接続します。 こちらをデジタル出力として
P1端子に3ボルトをスイッチを介して接続するデジタ入力の接続例として回路を作成しています。
LEDは通常、小さな抵抗を介してマイクロビットに接続するのですが 今回は抵抗入りLEDを使用しました。

反応時間測定プログラムの概要について見ていきましょう。
 まずAボタンが押されると 測定が開始されますが、まだ測定が開始されない状態、測定開始前では変数modeを999と設定します。
Aボタンが押されるとmodeは1となります。この状態を「準備状態」とします。
そして四角マークが マイクロビットに表示されます。
その後LEDディスプレーは表示が消えmodeを2とします。(この状態を待機状態とします。)
 しばらくするとP1端子に接続したLEDが点灯します。ここではmodeを3とします。(反応待ち) そして、これに反応して 被験者はスイッチを押します。ここでmodeが4となります。
 反応時間は LEDが点灯してからスイッチが押されるまでの間を取得します。そして最後に反応時間をmicro:bitのLEDディスプレーに表示し、modeを開始前状態の999とします。

最初だけブロックには、タイトル表示を行った後、変数Modeに測定開始前状態とするため999を入れる。そして 端子P1からの入力を安定させるためにプルダウンのブロックを置きます。

「ボタンAが押されたとき」最初に四角を表示し、modeを1とします。 これによって準備状態であることを設定します。
そして0.5秒後に四角を消します。
次に「ずっと」ブロックこ、れは全体を監視するブロックになります。
一番外側にmodeが999でなければ、つまり 測定開始前でなければ、その内側の「もし」ブロックを実行します。
modeが1ならば、つまり準備状態のときは 関数junbiに飛びます。
また待機状態、modeが2の場合 関数taikiにプログラムを移します。
そして 最後にget rtで反応時間をチェックします。

関数「junbi」と「taiki」の内容
関数junbiでは1秒間プログラムを停止した後、P0 端子に接続したLEDを消灯させます。そしてmodeを2とします。
関数taikiでは、 1秒から5秒までの乱数を発生させ 、その間プログラムを 停止させます。
次にmodeを3として、その時の時間をst_timeに代入し、LEDを点灯させます。これで反応待ちとなります。

 関数get_rtでは 端子P1に接続されたスイッチの状態をチェックします。
もしスイッチが押されている場合、すなわちP1が1の場合、modeが3すなわち「反応待ち」であることを確認しmodeを4として スイッチが押された状態に設定します。
 そしてrtに 現在の稼働時間からst_timeを引いて1000で割って反応時間を秒に変換します。
次にLEDを消灯させるため P0に0を設定します。
そしてマイクロビットのLEDディスプレイに反応時間rtを表示します。
最後にmodeを999として測定前の状態に戻します。
これでプログラムが完成です。


この記事が気に入ったらサポートをしてみませんか?