工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

反応時間を測定する

コンポーネントと消耗品

プッシュボタン
× 3
5 mm LED:赤
× 2
オス/オスジャンパー線
× 1
ブレッドボード(汎用)
× 1
Arduino UNO
× 1
USB-AからBへのケーブル
× 1
抵抗100オーム
× 2
抵抗10kオーム
× 3

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

私は、作家がアスリート、狙撃兵、クリケット選手、野球選手の生活に対する反応時間の影響を印象づけようとしている記事を読んでいました。最後に、彼はそれが普通の人々の生活に与える影響について結論を下しました。私は、反応時間が私たちの日常生活に多くの影響を及ぼしていることに驚きました。

たとえば、運転中の通常の反応時間よりも遅いと、重大な結果が生じる可能性があります。

どうすれば反応時間を測定できますか?

結果は次のとおりです。

ステップ1:必要なもの

以下は、反応時間を測定するために必要なもののリストです。

ハードウェア:

<図> <図> <図> <図> <図> <図> <図>

ソフトウェア:

  • Arduino IDE

上記のコンポーネントは、電子愛好家の床に置かれている必要があります:)

それが何であるかなどのコンポーネントのいずれかに疑問がある場合は、画像を見てください。

ステップ2:反応時間(RT)を測定する手順はどのようになりますか?

私たちの人体には多くの反応時間があります。オーディオRT、ビジュアルRT、タッチRTなどがあります。このインストラクタブルでは、測定について見ていきます

視覚反応時間。

視覚反応時間の測定手順:

  • Arduinoのシリアルモニターに「準備ができたら準備ボタンを押してください」というメッセージを表示します
  • 被検者が準備ボタンを押すと、ランダムな時間間隔が経過した後、2つのLEDのいずれかがランダムに点灯する必要があります。
  • 被検者はできるだけ早く対応するボタンを押す必要があります。
  • Arduinoは、LEDが点灯してから対応するボタンを押す人との時間差を記録します。
  • 測定された反応時間のメッセージをArduinoシリアルモニターに表示します。

私が言及したハードウェアコンポーネントのリストから、3つのボタンのうち、1つのボタンが準備完了ボタンとして機能し、残りの2つのボタンが機能することを明確にしておきます

2つのLEDに対応します。つまり、LED1-> BUTTON1、LED2-> BUTTON2です。つまり、LED1が点灯した場合、テスト対象の人はBUTTON1を押す必要があります。これは、

の場合と同様です。

LED2。

<図>

ステップ3:物事をまとめる

上の画像では、回路の構造を見ることができます。ここにいくつかのポイントを挙げさせてください。

  • arduinoボードからブレッドボードに5VとGNDを接続します。
  • 電流制限100オーム抵抗を介して両方のLEDのカソードを接続します。
  • LED1とLED2のアノードをそれぞれピン番号8と12に接続します。
  • 画像に示すプラグインプッシュボタン。 (ボタンが開いているときに押しボタンの場合、側面のリード線が短絡し、ボタンが押されると斜めのリード線になります
  • ショートします)
  • 画像に示すように10Kオームの抵抗を接続します。これはプルダウン抵抗として機能します。
  • 他のリード線をブレッドボードの5Vレールに接続します。
  • 最後に、ボタンをArduinoボードのピン番号2、4、7に接続します。

注意: 私が上で述べたピン番号はあなたの選択によって変わる可能性があります、私はちょうど私の好みを述べました。

<図>


ステップ4:コードを作成する

ダウンロードして再生を開始できるInstructable用のArduinoコードを添付しましたが、自分で作成することをお勧めします。以下は、コードを作成する際に留意する必要のあるいくつかのポイントです。

  • プッシュボタンの非表示に注意してください。
  • コードが反応時間を測定する際に優れた解像度を提供するように注意してください。
  • デバッグとヒューマンインターフェイスにシリアルモニターを使用します。

上記の手順のいずれかに疑問がある場合は、添付のビデオをご覧ください。

ステップ5:テスト時間

設定が完了したら、友達に電話して、誰が最速かを確認しましょう。チャートを準備して平均を取り(arduinoにそれを行わせる方が良い)、勝者を宣言します。デモビデオを添付しましたので、お気軽にご覧ください。私たちの平均視覚反応時間は約250ミリ秒です。

PS:飲酒後にこれ以上の場合は、運転しないでください。


コード

  • 反応時間を測定するためのArduinoコード。
反応時間を測定するためのArduinoコード。 Arduino
コードを実行してシリアルモニターを開くだけです。
 //ピン番号を設定します:const int buttonPin1 =4; // pushbutton1の数pinconstint buttonPin2 =2; // pushbutton2の数pinconstint buttonPin3 =7; // pushbutton3の数pinconstint ledPin1 =8; // LED1アノードの数(+)pinconst int ledPin2 =12; // LED2アノード(+)ピンの数//変数が変更されます:int ledState1 =LOW; // LED1の現在の状態intledState2 =LOW; // LED2intbuttonState1の現在の状態; //入力pin1intbuttonState2からの現在の読み取り値; //入力pin2intbuttonState3からの現在の読み取り値; //入力からの現在の読み取り値pin3intlastButtonState1 =LOW; //入力からの前回の読み取りpin1intlastButtonState2 =LOW; //入力からの前回の読み取りpin2intlastButtonState3 =LOW; //入力ピンからの前回の読み取り//次の変数はlongです。これは、マイクロ秒単位で測定された時間が、int.unsigned long lastDebounceTime =0に格納できるよりもすぐに大きな数値になるためです。 //最後に出力ピンが切り替えられたときlongdebounceDelay =20000; //デバウンス時間(マイクロ秒単位)unsigned long randNumber; //生成されたランダム数unsignedlong minRandomNumber =2000; //ランダムな数値の範囲を指定するために使用される最小数unsignedlong maxRandomNumber =5000; //ランダムな数値の範囲を指定するために使用される最大数unsignedlong time1、time2; int button3Pressed =LOW; int printcount =0; int takeReading =LOW; //ボタンの読み取りにおける次の変数ヘルプpinsintreading1; int reading2; int reading3; / /次の変数は、特定のLEDに対応するボタンの読み取りに役立ちます。つまり、LED1-> BUTTON1およびLED2-> BUTTON2int oddNumber; intevenNumber; void setup(){pinMode(buttonPin1、INPUT); pinMode(buttonPin2、INPUT); pinMode(buttonPin3、INPUT); pinMode(ledPin1、OUTPUT); pinMode(ledPin2、OUTPUT); //シリアル通信を有効にするSerial.begin(115200); //初期LED状態を設定しますdigitalWrite(ledPin1、ledState1); digitalWrite(ledPin2、ledState2); //アナログ入力ピン0が接続されていない場合、ランダムアナログノイズにより// randomSeed()が呼び出され、スケッチが実行されるたびに//異なるシード番号が生成されます。 // randomSeed()は、ランダム関数をシャッフルします。 randomSeed(analogRead(0));} void loop(){if(printcount ==0){Serial.println( "準備ができたらボタン3を押してください"); printcount =1; takeReading =LOW; //ボタン番号1と2を読み取らないoddNumber =LOW;偶数=LOW; } if(button3Pressed ==HIGH){digitalWrite(ledPin1、LOW); digitalWrite(ledPin2、LOW); randNumber =random(minRandomNumber、maxRandomNumber); //コードでは、2000〜5000のdelay(randNumber);として保持しています。 if(randNumber&1 ==1){digitalWrite(ledPin1、HIGH); digitalWrite(ledPin2、LOW); time1 =micros(); //Serial.println("ODD "); oddNumber =HIGH; } else {digitalWrite(ledPin1、LOW); digitalWrite(ledPin2、HIGH); time1 =micros(); //Serial.println("EVEN ");偶数=HIGH; } button3Pressed =LOW; } reading3 =digitalRead(buttonPin3); // button3を読み取りますif(takeReading ==HIGH){if(oddNumber ==HIGH)reading1 =digitalRead(buttonPin1); if(evenNumber ==HIGH)reading2 =digitalRead(buttonPin2); } //ノイズまたは押すことによりスイッチが変更された場合:if(reading1!=lastButtonState1 || reading2!=lastButtonState2 || reading3!=lastButtonState3){//デバウンスタイマーをリセットlastDebounceTime =micros(); } if((micros()-lastDebounceTime)> debounceDelay){//読み取り値が何であれ、//デバウンス遅延よりも長い間存在しているので、実際の現在の状態と見なします。//ボタンの状態が変更:if(reading1!=buttonState1){buttonState1 =reading1; //新しいボタンの状態がHIGHの場合にのみLEDを切り替えますif(buttonState1 ==HIGH){Serial.print( "あなたの反応時間は:"); Serial.print(lastDebounceTime --time1); Serial.println( "us"); Serial.println(); printcount =0; }} if(reading2!=buttonState2){buttonState2 =reading2; //新しいボタンの状態がHIGHの場合にのみLEDを切り替えますif(buttonState2 ==HIGH){Serial.print( "あなたの反応時間は:"); Serial.print(lastDebounceTime --time1); Serial.println( "us"); Serial.println(); printcount =0; }} if(reading3!=buttonState3){buttonState3 =reading3; //新しいボタンの状態がHIGHの場合にのみLEDを切り替えますif(buttonState3 ==HIGH){Serial.println( "READY TO GO"); button3Pressed =HIGH; takeReading =HIGH; }}} //読み取り値を保存します。次回ループを通過すると、//それはlastButtonStateになります:lastButtonState1 =reading1; lastButtonState2 =reading2; lastButtonState3 =reading3;} ​​

回路図


製造プロセス

  1. フォークリフトフォークを交換する時が来ましたか?
  2. 喉の渇き警報プラント警報
  3. イタリア語の単語時計
  4. 4x3キーパッドのピンは3つだけ
  5. SigfoxkWhメーター
  6. Bluetooth温度モニター
  7. ジェスチャー制御ロック
  8. コンパニオンIC
  9. USBMIDIアダプター
  10. Arduino用の絶縁アナログ入力
  11. コンプレッサーをアップグレードする時期ですか?