見出し画像

反応時間の測定-Part2

  • 今回のタイトルは「反応時間の測定Part2」 を お送りします。

  • 内容は前回の反応時間プログラムを改造して以下の内容を追加しました。

  • 回数を設定し反応時間測定を繰り返す。

  • 測定データは 配列に保存し集計する。

  • 配列のデータはロギングする。

この三つの項目について解説して行きます。
前回の反応時間プログラムではマイクロビットの端子を「短くタップするとき」のブロックを使用して測定プログラムを作成しました。

前回のプログラムではAボタンを押して 準備状態に入り ハートマークが表示されたとき 被験者は素早く 端子に触れる動作を行ない
このときの反応時間を測定するプログラムを作成しました。

プログラムの概要について見て行きます。
最初にmodeを999にして準備状態にします。
そして「ボタンAが押されたとき」四角マークが表示されmodeを1にします。
これで測定が開始されます。

次に「ずっと」ブロックでmodeが999でないのを確認した上で
mode 1のときは 関数{junbi}を呼び出し
1秒プログラムを停止させmode 2に移ります。
そして関数{taiki}では 1秒から5秒の休止の後 ハートマークを表示します。
この時の 稼働時間をst_timeに取り入れます。

端子を短くタップした時のブロックでは
modeが3であることを確認し
modeを4として この時の稼働時間からst_timeを引き 反応時間を求めます。そして ディスプレイに表示し
モードを999として 準備状態に戻る というプログラムでした。

このプログラムを連続的に測定できるような変更を加えました。
「最初だけ」ブロックの中に何回 測定を行うのかを入れる変数nを設定し、この中に5を入れ5回の測定を行うことにしました。
次に「ボタンAが押されたとき」 測定回数をカウントする変数 kaisuを0にリセットします。

{junbi}関数では 四角のアイコン表示するブロックをこちらに移動します。
これは毎回、四角を表示させるためにこの位置に移動しました。
そして「端子が タップされたとき」のブロック内では
LEDディスプレイに反応時間を表示した後
「回数を1だけ増やす」 ブロックを入れ回数が設定された n回以上になれば
測定の終了表示として"END"を表示します。
そしてmodeを999として 準備状態に戻します。
そうでないとき つまり 規定回数に達しない場合はmodeを1として測定を繰り返します。
この変更で 何回も繰り返し測定が可能となりました。

次の統計値を求めて表示するプログラムの追加には、 カスタムブロックの追加が必要になりますので 拡張機能より取り込んでください。
手順は拡張機能ボタンを押し表示された画面の上部のURL欄に 右に表示するURLを入れて検索し下に表示されたカスタムブロックをクリックして取り込んでください。 https://github.com/rock204/custom_block
これを使って統計値を計算します。

次のステップでは反応時間データを配列に格納し、そして統計値を計算する機能を追加しました。
まず「Aボタンが押されたとき」に rt_arrayをからの配列にする」ブロックを入れます。
rt_arrayは前もって 変数の定義をしておいてください。

次に 「端子が短くタップされたとき」のブロック内で
「数を表示 rt」の下に
「rt_arrayの 最後にrtを追加する」ブロックを入れます。
これで反応時間を配列rt_arrayに追加することができます。
そして測定が すべて済んだ時に関数{print_data}を呼び出します。
この関数{print_data}については次のページで 説明します。

こちらが測定されたデータと統計値を コンソールに書き出すプログラムです。
上の ループはカウンターを0からn-1まで繰り返します。
データの 1番目の測定が0に対応しているので n-1までとなっています。
このループを使って 各回のデータを出力します。
そして下の方の表記はcustomブロックの 最小値、最大値、平均値、標準偏差を 配列より計算するブロックを使用して結果を書き出しています。

次のステップではデータをマイクロビット内のファイルとして書き出すプログラムの追加です。
このプログラムには 拡張機能より dataloggerの項目を取り込みます。


変更点は「最初だけ」ブロックの最後に 「mirror data to serial」のブロックを入れて コンソール出力をオフにします。
次に 「ボタンAが押されたとき」のブロックに前のデータを消すため 「delet log」ブロックを入れ
次に {set columns}ブロックで項目名として noと rtを設定します。

そして「端子が短くタップされたとき」ブロック内で
「log data」ブロックを使用して回数と反応時間を出力させます。
これらのブロックの追加によって マイクロビットの中に データをロギングすることができます。

追加の変更として シリアル通信で「名前と数値を書き出す」ブロック内 に設定する データは半角英数字でなければ文字化けすることが分かりましたので、内容を半角英文字に変更しました。

こちらがコンソール出力した反応時間の各回のデータと 統計の結果となります。

マイクロビットに 出力されたロギングデータは PCのエクスプローラー で見ることができます。
マイクロビット内のMY_DATA.HTM をクリックして内容確認してください。


MY_DATA.HTMをダブルクリックすると ウェブブラウザが立ち上がり右のようにデータがロギングされていることがわかります。

今回のプログラム作成では、前回の反応時間プロジェクトを改良し
回数を設定し反応時間測定を繰り返し行うプログラムを作成しました。
そして各測定データを配列に保存しカスタムブロックを使用し計算することを行ないました。
また 配列に格納されたデータはロギングしてマイクロビットに保存するプログラムも追加しました。
以上で今回の解説は終わります。
ご視聴ありがとうございました。



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