#include <LiquidCrystal.h>
// button
const int buttonpin = 4;
int Button_state;
// Display
int rs = 12;
int en = 11;
int d4 = 10;
int d5 = 9;
int d6 = 8;
int d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// LED
const int redled = 6;
const int greenled = 5;
int led_state;
// Other
unsigned long randomnumber;
unsigned long reaction_time;
void setup() {
// put your setup code here, to run once:
pinMode(buttonpin, INPUT_PULLUP);
pinMode(greenled, OUTPUT);
pinMode(redled, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Reaction time:");
lcd.setCursor(0, 1);
lcd.print("Press to begin");
digitalWrite(redled, HIGH);
digitalWrite(redled, HIGH);
digitalWrite(greenled, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
led_state = 0;
Button_state = digitalRead(buttonpin);
Serial.println(Button_state);
if (Button_state == 0) {
led_state = 1;
digitalWrite(redled, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wait for the");
lcd.setCursor(0, 1);
lcd.print("green light");
randomnumber = random(3498, 5782);
delay(randomnumber);
digitalWrite(greenled, HIGH);
reaction_time = millis();
led_state = 1;
}
if (Button_state == 0 && led_state == 1) {
lcd.clear();
lcd.print(reaction_time);
}
}