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

Precisie Reactietijd Test met Arduino UNO

Onderdelen en benodigdheden

Onderdeel Aantal
Drukknoppen 3
5mm LED: Rood 2
Man-Man Jumper Draadjes 1 set
Breadboard (standaard) 1
Arduino UNO 1
USB-A naar B Kabel 1
Weerstand 100 ohm 2
Weerstand 10k ohm 3

Apps en online diensten

  • Arduino IDE

Over dit project

Ik las een artikel over reactietijd bij atleten, snipers, cricket/spelers en de impact op het dagelijks leven. Langzamere reactietijd bij rijden kan fataal zijn. Hoe meet ik mijn eigen reactietijd?

Stap 1: Benodigdheden

Precisie Reactietijd Test met Arduino UNO
Precisie Reactietijd Test met Arduino UNO
Precisie Reactietijd Test met Arduino UNO
Precisie Reactietijd Test met Arduino UNO
Precisie Reactietijd Test met Arduino UNO
Precisie Reactietijd Test met Arduino UNO
Precisie Reactietijd Test met Arduino UNO

Componenten liggen waarschijnlijk op de vloer van elke elektronica hobbyist :).

Stap 2: Procedure voor reactietijd meting

Veel soorten reactietijd: auditief, visueel, tast. We meten visuele reactietijd.

Procedure:

  1. Seriële monitor: "Druk op ready knop als je klaar bent".
  2. Na random wachttijd (2-5 sec) brandt één van de twee LED's (willekeurig).
  3. Testpersoon drukt zo snel mogelijk op de bijbehorende knop (LED1→Knop1, LED2→Knop2).
  4. Arduino meet tijdverschil tussen LED aan en knop indruk.
  5. Reactietijd tonen op seriële monitor.

Van de 3 knoppen: 1x ready, 2x voor LED's. Pin nummers naar keuze aanpasbaar.

Precisie Reactietijd Test met Arduino UNO

Stap 3: Schakeling bouwen

Precisie Reactietijd Test met Arduino UNO
  • 5V en GND van Arduino → breadboard.
  • Kathoden LED's via 100Ω weerstanden.
  • Anoden LED1, LED2 → pinnen 8, 12.
  • Drukknoppen aansluiten (open: zijpennen kortgesloten, ingedrukt: diagonale pennen).
  • 10kΩ pull-down weerstanden zoals getoond.
  • Andere kant knoppen → 5V rail.
  • Knoppen → pinnen 2, 4, 7.

Let op: Pin nummers zijn mijn keuze, vrij aanpasbaar.

Stap 4: Programmeren

Code bijgevoegd, maar zelf schrijven is leerzamer. Let op:

  • Debouncing van drukknoppen.
  • Goede resolutie voor reactietijd meting.
  • Seriële monitor voor debugging en interface.

Bij twijfel: kijk de bijgevoegde video.

Stap 5: Testen

Vrienden uitnodigen, snelste wint. Gemiddelde visuele reactietijd ~250ms.

PS: Als het na alcohol meer is, niet rijden!

Code

Arduino code voor reactietijd meting

// set pin numbers:
const int buttonPin1 = 4;
const int buttonPin2 = 2;
const int buttonPin3 = 7;
const int ledPin1 = 8;
const int ledPin2 = 12;

// Variables will change:
int ledState1 = LOW;
int ledState2 = LOW;
int buttonState1, buttonState2, buttonState3;
int lastButtonState1 = LOW, lastButtonState2 = LOW, lastButtonState3 = LOW;

unsigned long lastDebounceTime = 0;
long debounceDelay = 20000; // microseconds
unsigned long randNumber;
unsigned long minRandomNumber = 2000;
unsigned long maxRandomNumber = 5000;
unsigned long time1, time2;
int button3Pressed = LOW;
int printcount = 0;
int takeReading = LOW;
int reading1, reading2, reading3;
int oddNumber, evenNumber;

void setup() {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  Serial.begin(115200);
  digitalWrite(ledPin1, ledState1);
  digitalWrite(ledPin2, ledState2);
  randomSeed(analogRead(0));
}

void loop() {
  if (printcount == 0) {
    Serial.println("press button 3 when you are ready");
    printcount = 1;
    takeReading = LOW;
    oddNumber = LOW;
    evenNumber = LOW;
  }
  if (button3Pressed == HIGH) {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    randNumber = random(minRandomNumber, maxRandomNumber);
    delay(randNumber);
    if (randNumber & 1 == 1) {
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      time1 = micros();
      oddNumber = HIGH;
    } else {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      time1 = micros();
      evenNumber = HIGH;
    }
    button3Pressed = LOW;
  }
  reading3 = digitalRead(buttonPin3);
  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;
      if (buttonState1 == HIGH) {
        Serial.print("Your reaction time is: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println("us");
        Serial.println();
        printcount = 0;
      }
    }
    if (reading2 != buttonState2) {
      buttonState2 = reading2;
      if (buttonState2 == HIGH) {
        Serial.print("Your reaction time is: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println("us");
        Serial.println();
        printcount = 0;
      }
    }
    if (reading3 != buttonState3) {
      buttonState3 = reading3;
      if (buttonState3 == HIGH) {
        Serial.println("READY TO GO");
        button3Pressed = HIGH;
        takeReading = HIGH;
      }
    }
  }
  lastButtonState1 = reading1;
  lastButtonState2 = reading2;
  lastButtonState3 = reading3;
}

Schema's

Precisie Reactietijd Test met Arduino UNO

Productieproces

  1. Slimme Plantenalarmer – DIY Sensor voor Optimale Hydratatie
  2. Bouw een Italiaanse Woordklok met Arduino Nano, NeoPixel, LCD en RTC
  3. Bespaar Arduino-pins: Sluit een 4x3-toetsenblok aan met slechts 3 verbindingen
  4. Bouw een Betrouwbare Sigfox kWh Meter met Arduino MKR Fox 1200
  5. Bluetooth Temperatuurmeter met Arduino Nano
  6. Contactloos Gebaarslot: Veilige toegang met APDS-9960 en Arduino
  7. Arduino Nano Companion Kit – Essentiële Componenten & Hulpmiddelen voor DIY Electronica
  8. USB MIDI Adapter Kit voor Arduino Micro / Leonardo – Complete Onderdelenlijst
  9. Geïsoleerde analoge ingangsschakeling voor Arduino bouwen
  10. Wanneer uw heftruckvorken te vervangen: Een praktische gids
  11. Tijd om Uw Compressor te Upgraden? Herken de Signalen Vroegtijdig