Back to Projects
BeginnerArduino Uno R3
30 minutes build
Reaction timer game
A random wait, a light, a beep — and how fast can you press?
Interactive Simulation
Reaction timer gamearduino-uno
Required Components Checklist
Assembly Steps
1
Wire it
Button between pin 2 and GND, LED with resistor on pin 9, buzzer between pin 8 and GND.
2
Random delay
random(1500, 4000) waits a different time each round so you can't guess.
3
Measure
Store millis() when the LED turns on and subtract it when the button goes LOW.
Arduino Sketch
const int BUTTON = 2, LED = 9, BUZZER = 8;
void setup() {
pinMode(BUTTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(A1)); // noise from an unconnected pin
Serial.println("Get ready... press the button when the LED lights!");
}
void loop() {
delay(random(1500, 4000));
if (digitalRead(BUTTON) == LOW) {
Serial.println("Too early! Let go and wait for the light.");
while (digitalRead(BUTTON) == LOW) delay(10);
return;
}
digitalWrite(LED, HIGH);
tone(BUZZER, 880, 80);
unsigned long start = millis();
while (digitalRead(BUTTON) == HIGH) {
if (millis() - start > 3000) break;
}
unsigned long reaction = millis() - start;
digitalWrite(LED, LOW);
if (reaction > 3000) Serial.println("Too slow — try again.");
else {
Serial.print("Reaction time: ");
Serial.print(reaction);
Serial.println(" ms");
}
while (digitalRead(BUTTON) == LOW) delay(10);
}
Challenges & Extensions
Ready to take this project further? Try these challenges:
- •Keep the best time of the session.
- •Make it a two-player game with a second button.
- •Show a rating: under 250 ms = lightning.