Holiday Notice: DFRobot team is on holiday from Sep 30th to Oct 8th. Orders placed during this time will be processed starting Oct 9th. Thank you for your patience.

PROJECTS ArduinoIoT

Arduino Reaction Timer - My Kids Love Playing This

DFRobot Apr 21 2019 260749

Wait for light - press a button. So simple but so funny. All our family plays the game.

 

Things used in this project

Hardware components 
LED (generic) *2

SparkFun Pushbutton switch 12mm *2
DFRobot I2C 16x2 Arduino LCD Display Module
Slide Switch
Resistor 10k ohm
Battery Holder, 3 x AAA

Arduino Micro & Genuino Micro

Hand tools and fabrication machines

Soldering iron (generic)

 

Story

I discovered the code somewhere on the Internet and tried it.

All my family loved the game and I decided to assemble it in a funny case to be able to play.

The work is now finished and it is into the hands of my kids.

It is a very basic project but in a kind of case which hides all elements.

Here are some pictures:
 

 

I was able to shrink the system and program only an atmega328p chip. runs on 3 AAA.

 

This is how it looks. the big button is a hit button and the small red one top is "start".

 

Press start

 

Code

#include <Wire.h> #include <LiquidCrystal_I2C.h> #define btnSTART 5 #define btnHIT 7 #define ledTrigger 9 LiquidCrystal_I2C lcd(0x23,20,4); void setup() {  lcd.init();  lcd.backlight();  pinMode(btnSTART, INPUT_PULLUP);  pinMode(btnHIT, INPUT_PULLUP);  pinMode(ledTrigger, OUTPUT);  digitalWrite(ledTrigger, LOW);  lcd.print("Salut Famille!");  delay(2000);  lcd.clear();  randomSeed(analogRead(0)); } void loop() {  long timeReaction;  long timeTotal = 0;  lcd.print("Press START!");  while (digitalRead(btnSTART)) {}  delay(10);  while (!digitalRead(btnSTART)) {}  lcd.clear();  lcd.print("Jouez!!!");  delay(1000);  for (int i = 0; i < 5; i++) {    delay(random(500, 5000));    timeReaction = millis();    digitalWrite(ledTrigger, HIGH);    while (digitalRead(btnHIT)) {}    timeReaction = millis() - timeReaction;    timeTotal += timeReaction;    delay(10);    while (!digitalRead(btnHIT)) {}    digitalWrite(ledTrigger, LOW);    lcd.clear();    lcd.print(i + 1);    lcd.print(": ");    lcd.print(timeReaction);    delay(1000);  }  lcd.clear();  lcd.print("Moyenne = ");  lcd.print(timeTotal/5);  delay(10000);  lcd.clear();  } Credits