0

$USD

$USD
PROJECTS ArduinoIoT

Arduino Reaction Timer - My Kids Love Playing This

DFRobot Apr 21 2019 965

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