An ESP32-powered reaction time tester inspired by the Formula 1 start light sequence.
Demo: Watch on YouTube Shorts
- Authentic F1-style 5-light countdown sequence
- Millisecond-accurate reaction timing
- False start detection (press too early = penalty screen)
- Compact build — fits on a breadboard or small enclosure
- One-button operation: test → result → restart
| Component | Qty |
|---|---|
| ESP32 WROOM-32 Dev Board | 1 |
| ST7735 1.8" TFT Display | 1 |
| Tactile Push Button | 1 |
| Jumper Wires | — |
| Breadboard or custom PCB | 1 |
See BOM.csv for purchase links.
| TFT Pin | ESP32 GPIO |
|---|---|
| VCC | 3.3V |
| GND | GND |
| CS | GPIO 4 |
| RESET | GPIO 5 |
| A0 (DC) | GPIO 2 |
| SDA (MOSI) | GPIO 23 |
| SCK | GPIO 18 |
| LED (BL) | GPIO 15 |
| Button Pin | ESP32 |
|---|---|
| One leg | GPIO 22 |
| Other leg | GND |
GPIO 22 uses the internal pull-up resistor — no external resistor needed.
- Arduino IDE or PlatformIO
- ESP32 board package installed (guide)
- Libraries (install via Library Manager):
Adafruit ST7735by AdafruitAdafruit GFX Libraryby Adafruit
- Clone or download this repo
- Open
esp32-code/esp32_reaction_test/esp32_reaction_test.inoin Arduino IDE - Select board: ESP32 Dev Module
- Select the correct COM port
- Click Upload
- Power on the ESP32 — the display will show a ready screen
- Watch the five red lights illuminate one by one
- When all lights go out, press the button as fast as possible
- Your reaction time is displayed in milliseconds
- Press the button again to restart
False start: If you press before the lights go out, a penalty screen is shown. Press again to retry.
ESP32-Reaction-test/
├── esp32-code/
│ └── esp32_reaction_test/
│ └── esp32_reaction_test.ino # Main ESP32 Arduino sketch
├── README.md
└── BOM.csv
.csv
The ESP32 firmware is now isolated under esp32-code/ so hardware code stays cleanly separated from docs and supporting files.
MIT License — free to use, modify, and build on.
Used AI fort testing my components I was too lazy to write test code and for the commits