Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Messen Sie Ihre Reaktionszeit

Komponenten und Verbrauchsmaterialien

Drucktasten
× 3
5 mm LED:Rot
× 2
Überbrückungsdrähte männlich/männlich
× 1
Breadboard (generisch)
× 1
Arduino UNO
× 1
USB-A-zu-B-Kabel
× 1
Widerstand 100 Ohm
× 2
Widerstand 10k Ohm
× 3

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Ich habe einen Artikel gelesen, in dem der Autor versuchte, den Einfluss der Reaktionszeit auf das Leben von Sportlern, Scharfschützen, Kricketspielern und Baseballspielern zu beeindrucken. Schließlich schloss er mit seinen Auswirkungen auf das Leben normaler Menschen und ich war erstaunt zu sehen, dass die Reaktionszeit viele Auswirkungen auf unser tägliches Leben hatte.

Zum Beispiel kann eine langsamere Reaktionszeit während der Fahrt schwerwiegende Folgen haben.

Ich dachte:Wie kann ich meine Reaktionszeit messen?

Nachfolgend das Ergebnis.

Schritt 1:Was wir brauchen

Im Folgenden finden Sie die Liste der Dinge, die wir benötigen, um unsere Reaktionszeit zu messen.

Hardware:

Software:

  • Arduino-IDE

Oben genannte Komponenten müssen auf dem Boden eines Elektronikbastlers liegen :).

Wenn Sie Zweifel an einer der Komponenten haben, sehen Sie sich einfach die Bilder an.

Schritt 2:Wie wird die Reaktionszeit (RT) gemessen?

Unser menschlicher Körper hat viele Reaktionszeiten. Wir haben Audio RT, Visual RT, Touch RT und viele mehr. In diesem anweisbaren betrachten wir das Messen

Visuelle Reaktionszeit.

Verfahren zur Messung der visuellen Reaktionszeit:

  • Pop eine Nachricht auf dem seriellen Monitor von Arduino "Drücken Sie die Bereit-Taste, wenn Sie bereit sind"
  • Wenn die zu testende Person die Bereitschaftstaste drückt, muss nach einem zufälligen Zeitintervall eine der beiden LEDs zu zufällig aufleuchten.
  • Die zu testende Person sollte so schnell wie möglich die entsprechende Taste drücken.
  • Arduino merkt sich den Zeitunterschied zwischen dem Aufleuchten der LED und dem Drücken der entsprechenden Taste.
  • Geben Sie die Nachricht der gemessenen Reaktionszeit auf den seriellen Arduino-Monitor.

Lassen Sie mich klarstellen, dass aus der Liste der Hardwarekomponenten, die ich erwähnt habe, von 3 Tasten eine Taste als Bereit-Taste fungiert und die restlichen zwei Tasten

entsprechen zwei LEDs, d. h. LED1-->BUTTON1, LED2-->BUTTON2. was bedeutet, wenn LED1 aufleuchtet, sollte die Person im Test BUTTON1 drücken, ähnlich ist es bei

LED2.

Schritt 3:Dinge zusammenfügen

Im Bild oben sehen Sie den Aufbau der Schaltung. Lassen Sie mich hier einige Punkte zusammenfassen.

  • verbinden Sie 5V und GND vom Arduino-Board mit Ihrem Steckbrett.
  • Kathoden beider LEDs durch strombegrenzende 100-Ohm-Widerstände verbinden.
  • verbinden Sie die Anode von LED1 und LED2 mit Pin Nummer 8 bzw. 12.
  • Plug-in-Tasten wie im Bild gezeigt. (bei Druckknöpfen bei geöffnetem Taster sind die seitlichen Kabel kurzgeschlossen, beim Drücken des Tasters sind diagonale Kabelenden
  • wird kurzgeschlossen)
  • Verbinden Sie einen 10K Ohm Widerstand wie in der Abbildung gezeigt, dieser fungiert als Pull-Down-Widerstand.
  • anderes Kabel an 5V-Schiene am Steckbrett anschließen.
  • und schließlich die Tasten mit den Pins 2, 4 und 7 des Arduino-Boards verbinden.

Bitte beachten: Pin-Nummern, die ich oben erwähnt habe, können nach Ihrer Wahl variieren, ich habe gerade meine Präferenz erwähnt.


Schritt 4:Lets Code

Ich habe Arduino-Code für das instructable beigefügt, den Sie herunterladen und spielen können, aber ich schlage vor, Sie schreiben Ihren eigenen. Im Folgenden sind einige Punkte aufgeführt, die Sie beim Schreiben Ihres Codes beachten müssen.

  • Kümmere dich um das Anprangern von Druckknöpfen.
  • Achten Sie darauf, dass der Code eine gute Auflösung bei der Messung der Reaktionszeit bietet.
  • Verwenden Sie den seriellen Monitor zum Debuggen sowie die menschliche Schnittstelle.

Wenn Sie bei einem der oben genannten Schritte Zweifel haben, gehen Sie einfach das angehängte Video durch.

Schritt 5:Testzeit

Alles klar, ruf deine Freunde an und lass uns sehen, wer der Schnellste ist. Bereiten Sie das Diagramm vor, nehmen Sie den Durchschnitt (lassen Sie das besser arduino tun) und erklären Sie den Gewinner. Ich habe mein Demo-Video angehängt. Schauen Sie es sich gerne an. Die durchschnittliche visuelle Reaktionszeit beträgt für uns etwa 250 ms.

PS:Wenn es nach dem Trinken mehr ist, fahren Sie bitte nicht.


Code

  • Arduino-Code zum Messen Ihrer Reaktionszeit.
Arduino-Code zum Messen Ihrer Reaktionszeit.Arduino
Führen Sie einfach den Code aus und öffnen Sie den seriellen Monitor.
// setzen Sie die Pin-Nummern:const int buttonPin1 =4; // die Nummer des pushbutton1 pinconst int buttonPin2 =2; // die Nummer des pushbutton2 pinconst int buttonPin3 =7; // die Nummer des pushbutton3 pinconst int ledPin1 =8; // die Nummer der LED1-Anode (+) pinconst int ledPin2 =12; // die Nummer des LED2 Anode (+) Pins // Variablen ändern sich:int ledState1 =LOW; // der aktuelle Zustand der LED1int ledState2 =LOW; // der aktuelle Zustand des LED2int buttonState1; // der aktuelle Messwert vom Eingang pin1int buttonState2; // der aktuelle Messwert vom Eingang pin2int buttonState3; // der aktuelle Messwert vom Eingang pin3int lastButtonState1 =LOW; // der vorherige Messwert vom Eingang pin1int lastButtonState2 =LOW; // der vorherige Messwert vom Eingang pin2int lastButtonState3 =LOW; // der vorherige Messwert vom Eingangspin3// die folgenden Variablen sind lang, da die Zeit, gemessen in Mikrosekunden, // schnell eine größere Zahl wird, als in einem int.unsigned long gespeichert werden kann lastDebounceTime =0; // das letzte Mal, als der Ausgangspin umgeschaltet wurdelong debounceDelay =20000; // die Entprellzeit in Mikrosekundenunsigned long randNumber; // Generierte Zufallszahlunsigned long minRandomNumber =2000; // minimale Zahl, die verwendet wird, um den Bereich der Zufallszahl anzugebenunsigned long maxRandomNumber =5000; // maximale Zahl, die verwendet wird, um den Bereich der Zufallszahl anzugebenunsigned long time1,time2;int button3Pressed =LOW;int printcount =0;int takeReading =LOW;//folgende Variablenhilfe beim Lesen der Schaltflächen pinint reading1;int reading2;int reading3;/ /folgende variable Hilfe beim Lesen der Taste, die der jeweiligen LED entspricht, dh LED1 --> BUTTON1 und LED2 --> BUTTON2int oddNumber;int EvenNumber;void setup () { pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (ledPin1, AUSGANG); pinMode (ledPin2, AUSGANG); // Aktivieren der seriellen Kommunikation Serial.begin (115200); // Setze den anfänglichen LED-Zustand digitalWrite (ledPin1, ledState1); digitalWrite (ledPin2, ledState2); // Wenn der analoge Eingangspin 0 nicht verbunden ist, führt zufälliges analoges // Rauschen dazu, dass der Aufruf von randomSeed() jedes Mal, wenn der Sketch ausgeführt wird, // verschiedene Seed-Nummern generiert. // randomSeed() mischt dann die Zufallsfunktion. randomSeed (analogRead (0));} Void Schleife () { if (printcount ==0) { Serial.println ( "drücken Sie die Taste 3, wenn Sie bereit sind"); Druckzähler =1; takeReading =NIEDRIG; // Tastennummer 1 und 2 nicht lesen OddNumber =LOW; EvenNumber =NIEDRIG; aufrechtzuerhalten. Wenn (button3Pressed ==HIGH) { DigitalWrite (ledPin1, LOW); digitalWrite (ledPin2, LOW); RandNumber =random(minRandomNumber,maxRandomNumber); // In unserem Code haben wir sie als 2000 bis 5000 Verzögerung (randNumber) beibehalten; if (randNumber &1 ==1) { DigitalWrite (ledPin1, HIGH); digitalWrite (ledPin2, LOW); time1 =micros(); //Seriell.println("ODD"); ungeradeZahl =HOCH; aufrechtzuerhalten. Sonst { DigitalWrite (ledPin1, LOW); digitalWrite (ledPin2, HIGH); time1 =micros(); //Seriell.println("GERADE"); EvenNumber =HOCH; } Taste3Gedrückt =NIEDRIG; } lesen3 =digitalRead (buttonPin3); // read button3 if (takeReading ==HIGH) { if (oddNumber ==HIGH) reading1 =digitalRead (buttonPin1); if(evenNumber ==HIGH) reading2 =digitalRead(buttonPin2); } // Wenn sich der Schalter aufgrund von Rauschen oder Drücken geändert hat:if (reading1 !=lastButtonState1 || reading2 !=lastButtonState2 || reading3 !=lastButtonState3) { // Entprell-Timer zurücksetzen lastDebounceTime =micros(); } if ((micros() - lastDebounceTime)> debounceDelay) { // Was auch immer der Messwert ist, es war länger // als die Entprellungsverzögerung da, also nehmen Sie es als den aktuellen aktuellen Zustand:// wenn der Schaltflächenzustand hat geändert:if (reading1 !=buttonState1) { buttonState1 =reading1; // nur die LED umschalten, wenn der neue Tastenzustand HIGH ist, wenn (buttonState1 ==HIGH) {Serial.print ("Ihre Reaktionszeit ist:"); Serial.print (lastDebounceTime - time1); Serial.println("uns"); Serial.println(); Druckzähler =0; } } if (reading2 !=buttonState2) { buttonState2 =reading2; // nur die LED umschalten, wenn der neue Tastenzustand HIGH ist, wenn (buttonState2 ==HIGH) {Serial.print ("Ihre Reaktionszeit ist:"); Serial.print (lastDebounceTime - time1); Serial.println("uns"); Serial.println(); Druckzähler =0; } } if (reading3 !=buttonState3) { buttonState3 =reading3; // die LED nur umschalten, wenn der neue Tastenzustand HIGH ist, wenn (buttonState3 ==HIGH) { Serial.println ( "READY TO GO"); Taste3Gedrückt =HOCH; takeReading =HOCH; } } } // speichere den Messwert. Beim nächsten Durchlauf der Schleife // ist es lastButtonState:lastButtonState1 =reading1; lastButtonState2 =lesen2; lastButtonState3 =lesen3;}

Schaltpläne


Herstellungsprozess

  1. Ist es an der Zeit, Ihre Gabelstapler auszutauschen?
  2. Pflanzenalarm bei Durstalarm
  3. italienische Wordclock
  4. Nur drei Pins für eine 4x3-Tastatur
  5. Sigfox-kWh-Zähler
  6. Bluetooth-Temperaturüberwachung
  7. Gestengesteuerte Sperre
  8. Der Companion-IC
  9. Ein isolierter Analogeingang für Arduino
  10. Ist es an der Zeit, Ihren Kompressor aufzurüsten?