見出し画像

反応時間プログラムにOLEDディスプレーを追加する

こんにちはロック204チャンネルです。
このチャンネルではIT初心者のための情報を配信しています。
今回は「反応時間プログラムにOLEDディスプレイを追加する」と題してお送りします。

今回は前回の「デジタル入出力を利用した反応時間の測定Part2」の続編です。 こちらを先にご覧になると理解が進みやすいと思いますので ぜひご覧になってください。
今回は反応時間測定装置にOLEDディスプレイ「SSD1306」を追加し情報を見やすくしました。
このディスプレイを追加することによって、測定の案内、進行状況、結果の表示などができるようになりました。


このOLEDディスプレイを使用するためには、メークコードの拡張機能「SSD1306_OLED」を使用します。
拡張機能はメニュー より取り込んでください。


SSD1306はI2Cインターフェースでmicro:bitと接続できるようになっています。マイクロビットのP20端子にSDA、 P19端子にSCLが対応しています。
そしてSSD1306のVCCピンにはmicro:bitの3ボルトをつなぎます。


前回のプログラムよりの変更について説明します。
「最初だけ」ブロックの最後に「initialize OLED」ブロックを挿入します。
これは他のOLED関連ブロックを使用する前に必ず設定する必要があります。 デフォルトでwidth 128 height 64に設定します。
この値は画面の幅を128 高さを64ドットに設定する命令です。
その下に「show string」ブロックで文字列「Start ->A Button」 を画面に表示させます。
これにより次何をしたらよいかを被験者に案内します。


次に「Aボタンが押されたとき」ブロック内の追加です。
最初に「clear OLED display」でOLED画面を消去します。
次に「show string」ブロックで”measurement started”を表示し 測定が開始されたことを伝えます。


これらの ブロックについては変更がありません

関数「get_rt」ブロックの変更点を見て行きます。
データを「log data」ブロックでロギングした後に「draw loading bar at percent」ブロックを挿入します。
これはパラメーターのところにパーセンテージを 示す値を入れると 右の上のように測定の進捗を バーグラフで表示することができます。
ここではkaisuu+1をnで割って100をかけるという計算をしてパーセンテージを 計算しています。


関数「print_result」ブロックの変更点について見て行きます。
結果を表示する場合に小数点以下の桁が非常に多い場合にそれを抑制するために このような計算をしています。
桁数小数点以下の桁数を三桁にしたい場合は
平均値×1000を四捨五入し小数点以下を切り捨て1000で割ると小数点以下3桁の数となります
この計算を標準偏差にも適応しています。


こちらが関数「print_result」ブロックの最後の部分に追加した 命令です。
最初に「clear OLED display」ブロックで画面を消去し
「show string」ブロックで”—result--” を表示し改行します。
そして「show without newline line string」ブロックで”average=”と表示し改行なしで次のブロックを実行します。
次のブロックは「show number」ブロックで 変数averageの内容を 表示し改行します。
標準偏差stdについても同様に記述します。


OLED表示を追加したプログラムの実行

まとめ
反応時間測定装置にOLEDディスプレーを追加することにより検査のオリエンテーションや進行度を確認することができ測定に集中できるようになりました。
また検査が終了すると結果が固定されて表示されるので見やすさが向上しました。これはmicro:bitにはないOLEDディスプレーの利点でもあります。

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