【自由研究にぴったり】初心者キットで作る「反射神経テスター」|LEDが光ってから何秒で押せるかを測る装置

反射神経を測ろう! 自由研究の電子工作

夏休みの自由研究、データが取れる電子工作はいかが?

自由研究のテーマで電子工作を選びたいんだけど、ただ作るだけじゃなくて、ちゃんとデータを取って分析できるものがいいんだ。何かおすすめある?

いいね、自由研究としての完成度が一気に上がる視点だね。今日は「反射神経テスター」を紹介するよ。家族や友達のデータを集めて、年齢別の傾向を分析できるから、レポートが書きやすいんだ。

今回は、電子工作を自由研究のテーマにしたい中学生・高校生に向けて、Arduino初心者キットだけで作れる「反射神経テスター」の作り方を紹介します。

LEDがランダムなタイミングで光り、それを見てからボタンを押すまでの時間 (ミリ秒) を測る装置です。家族・友達・部活仲間のデータを集めれば、年齢や時間帯による反射神経の差を分析できるので、自由研究らしいレポートが書けます。

この記事で作るもの
  1. LEDがランダムなタイミング (約1〜5秒) で光る
  2. 光ったらボタンを押す
  3. 反応時間 (ミリ秒) をシリアルモニタに表示
  4. 10回測ると平均値も計算してくれる

使う部品 (キットにすべて入っている)

ELEGOOのスーパースターターキットがあれば、追加購入は不要です。

部品役割個数
Arduino UNO R3装置の頭脳1
LED (緑)「今だ!」の合図1
抵抗330ΩLEDを保護1
タクトスイッチ反応するボタン1
ブレッドボード配線をする台1
ジャンパーワイヤーつなぐ線5〜6本

完成までの流れ

1日で全部できますが、データ集めも含めて2〜3日かけるのが自由研究としてはおすすめです。

flowchart TD A["Step1
配線する"] --> B["Step2
プログラム
を書き込む"] B --> C["Step3
自分で
動作確認"] C --> D["Step4
家族や友達
でデータ収集"] D --> E["Step5
分析して
レポート化"]

配線図 (ブレッドボード)

同じ行 (row) の穴は内部でつながっています。図の通りに挿していきましょう。

        a b c d e
       +─────────+
[+]rail| . . . . . | ← 5V (Arduino 5V から)
[-]rail| . . . . . | ← GND (Arduino GND から)
       +─────────+
row 5  | X . . . . | ← タクトSW 片足 (D2)
row 7  | X . . . . | ← タクトSW 反対足 ([-]rail)
row 11 | X . . . . | ← 330Ω 上足 (D7 から)
row 12 | X . . . . | ← 330Ω 下足+LED アノード
row 14 | X . . . . | ← LED カソード ([-]rail)
       +─────────+

部品同士のつながり

Arduino       タクトスイッチ
  D2   ←────   片足 (押すと閉じる)
  GND  ←────   反対側の足

Arduino       LED + 抵抗
  D7   ────→   330Ω → LED アノード
  GND  ←────   LED カソード

タクトスイッチは押している間だけ電気を通す部品です。ブレッドボードの中央の溝をまたぐように挿し、対角の2本を使います (同じ側の2本は元々つながっているので使いません)。Arduinoの内蔵プルアップ機能を使うので、外付け抵抗は不要です。

プログラム

Arduino IDEに次のスケッチをコピーして書き込みましょう。ライブラリのインストールは不要です。

#define LED_PIN 7
#define BUTTON_PIN 2
#define NUM_TRIALS 10

long reactionTimes[NUM_TRIALS];
int trialCount = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  randomSeed(analogRead(A0));
  Serial.println("反射神経テスター スタート!");
  Serial.println("LEDが光ったらボタンを押してね");
}

void loop() {
  if (trialCount >= NUM_TRIALS) {
    showAverage();
    while (true) {}
  }

  long waitMs = random(1000, 5001);
  delay(waitMs);

  digitalWrite(LED_PIN, HIGH);
  unsigned long ledOnTime = millis();

  while (digitalRead(BUTTON_PIN) == HIGH) {
    if (millis() - ledOnTime > 2000) {
      Serial.println("[時間切れ] 反応なし");
      digitalWrite(LED_PIN, LOW);
      delay(1000);
      return;
    }
  }

  unsigned long reactionMs = millis() - ledOnTime;
  digitalWrite(LED_PIN, LOW);

  reactionTimes[trialCount] = reactionMs;
  trialCount++;

  Serial.print("[");
  Serial.print(trialCount);
  Serial.print("回目] ");
  Serial.print(reactionMs);
  Serial.println("ms");
  delay(1500);
}

void showAverage() {
  long sum = 0;
  for (int i = 0; i < NUM_TRIALS; i++) sum += reactionTimes[i];
  Serial.println("=====");
  Serial.print("平均反応時間: ");
  Serial.print(sum / NUM_TRIALS);
  Serial.println("ms");
}

プログラムの動き

flowchart TD A[起動] --> B["ランダム時間
待つ"] B --> C["LED点灯
時刻を記録"] C --> D{"ボタン
押された?"} D -->|Yes| E["反応時間を
計算&記録"] D -->|No 2秒経過| F[時間切れ] E --> G{10回終わった?} G -->|No| B G -->|Yes| H[平均値を表示] F --> B

使い方の手順

書き込みが終わったら、Arduino IDEの「シリアルモニタ」を開いて、9600bpsに設定します。準備完了です。

測定のコツ
同じ姿勢・同じ距離で測ること。ボタンの上に指を軽く乗せた状態で構えると、データのバラつきが減ります。

データ収集と分析のアイデア

自由研究としては、ここからが本番です。家族や友達のデータを集めて、いろいろな角度で分析しましょう。

データの取り方のアイデア
  1. 家族 (お父さん・お母さん・兄弟) で年齢別に測る
  2. 朝・昼・夜の3つの時間帯で同じ人を測る
  3. 運動の前後で測って、体温と反応時間の関係を調べる
  4. 利き手と利き手じゃない手の差を比べる

たとえば「父40歳: 平均280ms、自分13歳: 平均210ms」のように整理すれば、年齢と反応時間の関係をグラフにできます。

データはどんなグラフにするのがいい?

「年齢を横軸、平均反応時間を縦軸」の散布図がいちばん分かりやすいよ。10人くらい集まると、傾向が見えてきて、レポートが一気に「研究っぽく」なるんだ。

レポートの書き方

動くものとデータが揃ったら、最後にレポートにまとめます。次の構成で書くと、自由研究としての完成度が高くなります。

レポートの構成 (6項目)
  1. 研究のきっかけ (なぜ反射神経を測ろうと思ったか)
  2. 仮説 (年齢が上がると反応時間も長くなるか?など)
  3. 使った部品と配線図
  4. プログラムの説明
  5. 測定結果 (表とグラフ)
  6. 仮説の検証 + 感想と発展案

とくに2番目の「仮説」を最初に立てておくと、研究の流れが整理できるのでおすすめです。たとえば「中学生は大人より反応時間が短いはず」みたいな仮説を最初に書いておきます。

改造のアイデア

基本動作ができたら、自分なりの工夫を加えるとさらに評価が上がります。

発展アイデア
  1. 3色LEDのうち「赤」が光ったときだけ押す (選択反応)
  2. パッシブブザーで「ピッ」と音も同時に出す (音と光どちらが速いか比較)
  3. LCD画面に直接結果を表示する
  4. 10回の測定後、最速・最遅・標準偏差も計算する

まとめ

今回は、自由研究にぴったりな「反射神経テスター」の作り方を紹介しました。Arduino初心者キットだけで作れて、測定値が手元に残るので、表やグラフまで作りやすいテーマです。

大切なのは、作って終わりにせず、データを集めて何かを発見することです。家族や友達を巻き込んで、ぜひ自分なりの「研究」にしてみてください。

他にも初心者キットだけで作れる作例を別の記事で紹介しているから、興味があれば見てみてね。