Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Meet je reactietijd

Componenten en benodigdheden

drukknoppen
× 3
5 mm LED:rood
× 2
Mannelijke/Mannelijke doorverbindingsdraden
× 1
Broodplank (algemeen)
× 1
Arduino UNO
× 1
USB-A naar B-kabel
× 1
Weerstand 100 ohm
× 2
Weerstand 10k ohm
× 3

Apps en online services

Arduino IDE

Over dit project

Ik las een artikel waarin een schrijver indruk probeerde te maken op het effect van reactietijd op het leven van atleten, sluipschutters, cricketspelers en honkbalspelers. Ten slotte besloot hij met zijn effect op het leven van normale mensen en ik was verbaasd te zien dat reactietijd veel gevolgen had voor ons dagelijks leven.

Een tragere reactietijd dan normaal tijdens het rijden kan bijvoorbeeld ernstige gevolgen hebben.

Ik dacht:hoe kan ik mijn reactietijd meten?

Hieronder volgt het resultaat.

Stap 1:Dingen die we nodig hebben

Hieronder volgt de lijst met dingen die we nodig hebben om onze reactietijd te meten.

Hardware:

Software:

  • Arduino IDE

Bovengenoemde componenten moeten op de vloer van een elektronische hobbyist liggen :).

Als je twijfelt over een onderdeel zoals het is, kijk dan naar de afbeeldingen.

Stap 2:Wat is onze procedure om de reactietijd (RT) te meten?

Er zijn veel reactietijden betrokken bij ons menselijk lichaam. we hebben Audio RT, visuele RT, Touch RT en nog veel meer. In deze instructable zullen we kijken naar het meten

Visuele reactietijd.

Procedure voor het meten van visuele reactietijd:

  • Plaats een bericht op de seriële monitor van Arduino "druk op de gereedknop als u klaar bent"
  • Als de geteste persoon na een willekeurig tijdsinterval op de gereed-knop drukt, moet een van de twee LED's die te willekeurig oplichten.
  • De te testen persoon moet zo snel mogelijk op de overeenkomstige knop drukken.
  • Arduino houdt rekening met het tijdsverschil tussen het oplichten van de LED en de persoon die op de bijbehorende knop drukt.
  • Zet het bericht van de gemeten reactietijd op de Arduino seriële monitor.

Laat me verduidelijken dat uit de lijst met hardwarecomponenten die ik heb genoemd, van de 3 knoppen, één knop zal fungeren als gereedknop en de resterende twee knoppen zullen

corresponderen met twee LED's, d.w.z. LED1-->BUTTON1 , LED2-->BUTTON2. wat betekent dat als LED1 oplicht, de te testen persoon op BUTTON1 moet drukken, vergelijkbaar is het geval voor

LED2.

Stap 3:dingen samenbrengen

In de afbeelding hierboven zie je de opbouw van het circuit. laat me hier een paar punten naar voren brengen.

  • verbind 5V en GND van het Arduino-bord met je breadboard.
  • verbind de kathode van beide LED's via stroombeperkende 100 Ohm-weerstanden.
  • verbind de anode van LED1 en LED2 met respectievelijk pin 8 en 12.
  • plug-in drukknoppen zoals weergegeven in de afbeelding. (in het geval van drukknoppen wanneer de knop open is, worden de kabels aan de zijkanten kortgesloten, wanneer de knop wordt ingedrukt diagonale kabels
  • wordt kortgesloten)
  • Sluit een weerstand van 10K Ohm aan zoals weergegeven in de afbeelding, deze werkt als een pull-down-weerstand.
  • sluit andere kabel aan op 5V-rail op breadboard.
  • en sluit tenslotte de knoppen aan op pin 2, 4 en 7 van het Arduino-bord.

Let op: Pinnummers die ik hierboven heb genoemd, kunnen variëren naargelang uw keuze, ik heb zojuist mijn voorkeur aangegeven.


Stap 4:Laten we coderen

Ik heb Arduino-code bijgevoegd voor de instructable, die je kunt downloaden en beginnen met spelen, maar ik raad je aan om je eigen code te schrijven. Hieronder volgen enkele punten waarmee u rekening moet houden bij het schrijven van uw code.

  • Zorg voor het opzeggen van drukknoppen.
  • Zorg ervoor dat de code een goede resolutie biedt bij het meten van de reactietijd.
  • Gebruik seriële monitor voor foutopsporing en menselijke interface.

Als je twijfelt over een van de bovenstaande stappen, ga dan door de bijgevoegde video.

Stap 5:Testtijd

Helemaal klaar, bel je vrienden en laat zien wie de snelste is. Bereid de grafiek voor, neem het gemiddelde (laat arduino dat beter doen) en verklaar de winnaar. Ik heb mijn demovideo bijgevoegd. Neem gerust een kijkje. De gemiddelde visuele reactietijd voor ons is ongeveer 250 ms.

PS:als het meer is dan dit na een drankje, rijd dan alsjeblieft niet.


Code

  • Arduino-code om je reactietijd te meten.
Arduino-code voor het meten van je reactietijd.Arduino
voer gewoon de code uit en open de seriële monitor.
// set pin numbers:const int buttonPin1 =4; // het nummer van de pushbutton1 pinconst int buttonPin2 =2; // het nummer van de pushbutton2 pinconst int buttonPin3 =7; // het nummer van de pushbutton3 pinconst int ledPin1 =8; // het nummer van de LED1-anode (+) pinconst int ledPin2 =12; // het nummer van de LED2 anode (+) pin// Variabelen zullen veranderen:int ledState1 =LOW; // de huidige status van de LED1int ledState2 =LAAG; // de huidige status van de LED2int buttonState1; // de huidige waarde van de invoer pin1int buttonState2; // de huidige waarde van de invoer pin2int buttonState3; // de huidige waarde van de invoer pin3int lastButtonState1 =LAAG; // de vorige lezing van de invoer pin1int lastButtonState2 =LAAG; // de vorige lezing van de invoer pin2int lastButtonState3 =LAAG; // de vorige lezing van de invoerpin3// de volgende variabelen zijn lang omdat de tijd, gemeten in microseconden,// snel een groter getal zal worden dan kan worden opgeslagen in een int.unsigned long lastDebounceTime =0; // de laatste keer dat de uitvoerpin werd geschakeldlong debounceDelay =20000; // de debouncetijd in microseconden unsigned long randNumber; // Gegenereerd willekeurig nummer unsigned long minRandomNumber =2000; // minimum aantal dat wordt gebruikt om het bereik van willekeurig nummer op te geven, lang maxRandomNumber =5000; // maximum aantal dat wordt gebruikt om het bereik van willekeurig nummer te specificeren zonder teken lange tijd1, tijd2;int-knop3Pressed =LOW;int printcount =0;int takeReading =LOW;//volgens variabele hulp bij het lezen van knoppen pinsint reading1;int reading2;int reading3;/ /Volgende variabele hulp bij het lezen van de knop die overeenkomt met de perticulaire led, dat wil zeggen LED1 --> BUTTON1 en LED2 --> BUTTON2int oddNumber;int evenNumber;void setup(){ pinMode(buttonPin1, INPUT); pinMode (knopPin2, INPUT); pinMode (knopPin3, INPUT); pinMode (ledPin1, UITGANG); pinMode (ledPin2, UITGANG); // seriële communicatie mogelijk maken Serial.begin (115200); // stel de initiële LED-status in digitalWrite (ledPin1, ledState1); digitalWrite(ledPin2, ledState2); // als analoge ingang pin 0 niet is aangesloten, zal willekeurige analoge // ruis ervoor zorgen dat de aanroep naar randomSeed() elke keer dat de schets wordt uitgevoerd, verschillende seed-nummers genereert. // randomSeed() zal dan de willekeurige functie in willekeurige volgorde afspelen. randomSeed(analogRead(0));} void loop() {if(printcount ==0) { Serial.println("druk op knop 3 als je klaar bent"); aantal afdrukken =1; takeReading =LAAG; // niet om knop nummer 1 en 2 te lezen oddNumber =LAAG; evenNummer =LAAG; } if (button3Pressed ==HOOG) {digitalWrite (ledPin1, LAAG); digitalWrite (ledPin2, LAAG); randNumber =willekeurig (minRandomNumber,maxRandomNumber); // in onze code hebben we ze als 2000 tot 5000 vertraging (randNumber); if (randNumber &1 ==1) {digitalWrite(ledPin1, HIGH); digitalWrite (ledPin2, LAAG); tijd1 =micros(); //Serial.println("ODD"); onevenGetal =HOOG; } else {digitalWrite(ledPin1, LOW); digitalWrite (ledPin2, HOOG); tijd1 =micros(); //Serial.println ("EVEN"); evenGetal =HOOG; } knop3Ingedrukt =LAAG; } reading3 =digitalRead(buttonPin3); // lees button3 if (takeReading ==HOOG) {if (oddNumber ==HOOG) reading1 =digitalRead (buttonPin1); if(evenNumber ==HOOG) reading2 =digitalRead(buttonPin2); } // Als de schakelaar is gewijzigd vanwege ruis of door te drukken:if (reading1 !=lastButtonState1 || reading2 !=lastButtonState2 || reading3 !=lastButtonState3) { // reset de debounce-timer lastDebounceTime =micros(); } if ((micros() - lastDebounceTime)> debounceDelay) {// wat de meting ook is, het is er al langer // dan de debounce-vertraging, dus neem het als de werkelijke huidige status:// als de knopstatus heeft gewijzigd:if (reading1!=buttonState1) { buttonState1 =reading1; // schakel de LED alleen in als de nieuwe knopstatus HOOG is if (buttonState1 ==HOOG) { Serial.print ("Uw reactietijd is:"); Serial.print (laatsteDebounceTime - tijd1); Serial.println("ons"); Serieel.println(); aantal afdrukken =0; } } if (reading2!=buttonState2) { buttonState2 =reading2; // schakel de LED alleen in als de nieuwe knopstatus HOOG is if (buttonState2 ==HOOG) { Serial.print ("Uw reactietijd is:"); Serial.print (laatsteDebounceTime - tijd1); Serial.println("ons"); Serieel.println(); aantal afdrukken =0; } } if (reading3 !=buttonState3) { buttonState3 =reading3; // schakel de LED alleen in als de nieuwe knopstatus HOOG is als (buttonState3 ==HOOG) { Serial.println ("KLAAR OM TE GAAN"); knop3Ingedrukt =HOOG; takeReading =HOOG; } } } // sla de meting op. De volgende keer door de lus, // is dit de lastButtonState:lastButtonState1 =reading1; lastButtonState2 =lezen2; lastButtonState3 =lezen3;}

Schema's


Productieproces

  1. Is het tijd om uw vorkheftruckvorken te vervangen?
  2. Dorstalarm plantalarm
  3. Italiaanse Word Clock
  4. Slechts drie pinnen voor een 4x3-toetsenbord
  5. Sigfox kWh-meter
  6. Bluetooth-temperatuurmeter
  7. Gebarengestuurd slot
  8. The Companion IC
  9. USB MIDI-adapter
  10. Een geïsoleerde analoge ingang voor Arduino
  11. Is het tijd om uw compressor te upgraden?