Advancing Research. Building The Future | Welcome To The Website Of Saswata Bag

Reaction Time Tester

Arduino-Based Reflex and Coordination Assessment System

Embedded Systems • Human Performance • Interactive Electronics

Platform: Arduino Uno Input: Analog Joystick Display: 16×2 I2C LCD Status: Completed Open-Source Project

The Reaction Time Tester is an open-source educational project. Its Arduino source code, circuit diagram, wiring information, component links, technical documentation and project photographs are available through the Open Source Section.

Introduction

The Reaction Time Tester is an Arduino-based interactive device developed to measure how quickly a user responds to a randomly generated visual command. The device uses an Arduino Uno, an analog joystick and a 16×2 I2C LCD.

At the beginning of each trial, the user presses the joystick button to start the test. The system then waits for a random period so that the user cannot predict when the signal will appear. When the LCD displays START, the user must press the joystick button as quickly as possible.

The Arduino calculates the time between displaying the start signal and detecting the joystick response. The measured reaction time is displayed in milliseconds. Repeated trials can be used to observe reflex speed, response consistency and hand–eye coordination.

Arduino-based Reaction Time Tester prototype
Completed Reaction Time Tester prototype with an I2C LCD and joystick control.

Objective

The objective of the project is to develop a simple, affordable and user-friendly electronic system that measures human reaction time in milliseconds through a randomized visual stimulus and joystick response.

The system is designed primarily for educational demonstrations, reflex-training activities and experimentation with response speed and coordination. It is not intended to replace professional medical or psychological assessment.

Abstract

The project uses an Arduino Uno as the main processing unit. A 16×2 I2C LCD displays instructions, the randomized start signal and the recorded response time. An analog joystick provides the user input through its integrated push button.

After the test begins, the microcontroller generates a random delay. If the user presses the joystick before the start signal, the system records a false start. Once the LCD displays START, the Arduino begins timing and stops when the joystick button is pressed. The result is shown in milliseconds.

Keywords: Reaction Time, Reflex Testing, Arduino Uno, Joystick, I2C LCD, Human Response, Coordination and Embedded Systems.

Features

Randomized waiting period before every start signal.
Reaction-time measurement in milliseconds.
Joystick push button used for starting and responding.
False-start detection when the button is pressed too early.
16×2 I2C LCD for instructions and result display.
Repeated trials for observing response consistency.
Compact enclosure suitable for demonstrations.
Open-source hardware, source code and circuit documentation.

Scientific and Working Principle

Human reaction time is the interval between the presentation of a stimulus and the initiation of a physical response. In this project, the visual word START displayed on the LCD acts as the stimulus, while pressing the joystick button acts as the response.

The Arduino records the starting time using its internal millisecond timer when the visual command appears. When the joystick button is pressed, the Arduino records the second time value. The reaction time is calculated by subtracting the stimulus time from the response time.

Stage 01 User presses the joystick to begin a trial
Stage 02 Arduino generates a random waiting period
Stage 03 LCD displays the visual START command
Stage 04 User presses the joystick as quickly as possible
Stage 05 Arduino calculates and displays reaction time

Interactive Reaction-Time Simulation

Press Start Test, wait for the LCD to display START, and then press the virtual joystick or the keyboard spacebar as quickly as possible. Pressing before START will be recorded as a false start.

Browser Reaction-Time Tester Simulator Ready
REACTION TEST
PRESS START

Test Status

IDLE Press Start Test

Reaction Statistics

— Latest Time
— Best Time
— Average
0 Valid Trials
0 False Starts
— Last Wait
Not Tested Complete a valid trial to receive a performance category.

Controls

Keyboard control: press Space or Enter to operate the virtual joystick. Do not press until the LCD displays START.

Components Used

Components used in the Reaction Time Tester
  • Arduino Uno R3
  • 16×2 Character LCD Display
  • I2C LCD Interface Module
  • Dual-Axis Analog Joystick Module
  • Joystick Integrated Push Button
  • Male-to-Male Jumper Wires
  • USB Programming and Power Cable
  • Prototype Enclosure

Technical Description

The Arduino Uno manages the complete operating sequence. The joystick push-button input is configured using an internal pull-up resistor so that a button press can be detected reliably. The LCD is connected through the I2C communication interface, reducing the number of required Arduino pins.

A random delay is generated at the beginning of every trial. During this period, the Arduino continuously checks whether the user has pressed the joystick early. After the random delay ends, START is displayed and the response timer begins.

Part Specification Function
Microcontroller Arduino Uno R3 Controls timing, LCD output and joystick input
Display 16×2 LCD with I2C interface Shows instructions, START command and result
User Input Analog joystick with push button Starts the test and records the response
Timing Resolution Millisecond-based Arduino timing Calculates the reaction interval
Power USB or regulated Arduino input Powers the controller, joystick and LCD

Circuit Design and Connections

I2C LCD Connections

The I2C interface allows the LCD to communicate with the Arduino through the SDA and SCL lines.

LCD VCC Arduino 5 V
LCD GND Arduino GND
LCD SDA Arduino Uno A4
LCD SCL Arduino Uno A5

Joystick Connections

The joystick push-button line is used as the main response input. The X and Y axes may also be used in future versions for directional-response tests.

Joystick VCC Arduino 5 V
Joystick GND Arduino GND
Joystick SW Arduino digital pin 2
Joystick VRx Arduino analog pin A0 for future directional tests
Joystick VRy Arduino analog pin A1 for future directional tests

Methodology

  1. Study the concept of human reaction time and identify a suitable visual stimulus and response mechanism.
  2. Connect the Arduino Uno, I2C LCD and joystick module and verify individual component operation.
  3. Program the LCD to display instructions and test states.
  4. Generate a different random waiting period for every trial.
  5. Start the timer when the word START appears on the LCD.
  6. Stop the timer when the joystick button is pressed and calculate the response time.
  7. Display the measured result in milliseconds and identify false starts.
  8. Test repeated trials and refine button debouncing and timing reliability.

Applications

Educational demonstrations of human reaction time.
Reflex and hand–eye coordination exercises.
Embedded-systems and Arduino programming practice.
Interactive exhibits for science fairs and laboratories.
Repeated response-time experiments and data comparison.
Future directional-response activities using joystick axes.

Experimental Results

Completed Reaction Time Tester prototype
Front and side views of the completed Reaction Time Tester enclosure.

The completed prototype successfully generates a randomized waiting interval, displays a START signal, detects the joystick response and presents the calculated reaction time on the LCD in milliseconds. The random delay prevents the user from predicting the start signal, while false-start detection identifies responses made before the command appears.

Future Scope

Directional reaction tests using joystick X and Y movement.
Storage of multiple users and test histories.
Wireless transfer of results to a computer or mobile device.
Multiple visual, sound and directional stimulus modes.
Statistical analysis of average and best response times.
Larger displays and classroom competition modes.

Open-Source Project Resources

For the complete project circuit diagram, Arduino source code, component-purchase links, wiring information, project photographs and technical documentation, visit the Open Source Section.

Arduino Source Code
Circuit Diagram
Component Links
Project Pictures
Visit Open Source Section

Conclusion

The Reaction Time Tester demonstrates how an Arduino, joystick and I2C LCD can be combined to create an interactive human-response measurement system. It provides immediate results, randomized timing and false-start detection in a compact and affordable form.

The project also offers a practical introduction to Arduino timing functions, digital input, random-number generation, LCD communication, button debouncing and interactive product development.

Open-Source Educational Project

The Reaction Time Tester is released as an open-source educational project. Its source code, circuit diagrams, component information and supporting documentation may be studied, reused and modified in accordance with the licence and attribution requirements provided in the Open Source Section. Applicable attribution should be retained, and modified versions should be clearly identified.