PROJECTS ArduinoIoT

Arduino Reaction Timer - My Kids Love Playing This

DFRobot Apr 21 2019 260085

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