This project is an embedded system that measures human reaction time using different types of stimuli. The system combines electronics, programming, and measurement technology to test how quickly a user reacts to a signal.
The project uses three different types of signals:
- Visual signal using an LED
- Sound signal using a buzzer
- Tactile signal using a vibrator
When a signal is activated, the user should press a button as quickly as possible. The microcontroller measures the reaction time and displays the result on an LCD screen. The results can then be presented visually, for example as history or a histogram.
The purpose of the project is to create a portable and user-friendly system for measuring and analyzing reaction ability. The system can be used for training, demonstration, or as a technical example of how electronics and programming can be combined in an interactive measurement system.
The system works as follows:
- The user starts the system.
- The LCD screen shows that the system is ready.
- A random waiting time is used so that the user cannot predict when the signal will appear.
- The system activates one of three signals: LED, buzzer, or vibrator.
- The user presses the button as quickly as possible.
- The microcontroller measures the reaction time.
- The result is displayed on the LCD screen.
- Multiple results can be saved and displayed as history or as a histogram.
The project consists of the following components:
- GD32VF103 RISC-V microcontroller
- LCD screen
- Push button
- LED
- Buzzer
- Vibration motor
- Breadboard
- USB power supply, 5 V
The software is written in C and runs on a GD32VF103 RISC-V-based microcontroller.
The most important files are:
| File | Description |
|---|---|
main.c |
The main program that controls the test flow |
lcd.c / lcd.h |
Functions for the LCD screen |
pwm.c / pwm.h |
PWM control for the buzzer |
vibrator.c / vibrator.h |
Control of the vibrator |
oledfont.h |
Font data for the LCD screen |
Makefile |
Build file for compilation |
The block diagram shows how the different parts of the system interact.
The flowchart shows the program logic from startup to measurement and result display.
The circuit diagram shows how the components are connected to the microcontroller.
Below is the finished prototype built on a breadboard.
- Connect the microcontroller via USB.
- Wait until the LCD screen shows that the system is ready.
- React as quickly as possible when the LED, buzzer, or vibrator is activated.
- Press the button.
- Read the reaction time on the LCD screen.
- Repeat the test to collect more results.
The system displays the user’s reaction time directly on the LCD screen. After several attempts, the results can be presented as a summary, for example as history or as a histogram. This makes it easier to compare different reaction times over time.




