#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int ledPin = 13;
const int buttonPin = 12;
unsigned long startTime;
unsigned long reactionTime;
bool gameStarted = false;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x27 jika alamat I2C berbeda
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT); // Ganti jadi INPUT biasa
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Reaction Timer!");
delay(2000);
lcd.clear();
randomSeed(analogRead(0));
}
void loop() {
if (!gameStarted) {
lcd.setCursor(0, 0);
lcd.print("Tunggu LED...");
int delayTime = random(2000, 5000);
delay(delayTime);
digitalWrite(ledPin, HIGH);
startTime = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tekan tombol!");
gameStarted = true;
}
// Ubah logika jadi tombol ditekan saat HIGH
if (gameStarted && digitalRead(buttonPin) == HIGH) {
reactionTime = millis() - startTime;
digitalWrite(ledPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Waktu reaksi:");
lcd.setCursor(0, 1);
lcd.print(reactionTime);
lcd.print(" ms");
gameStarted = false;
// Tunggu sampai tombol dilepas
while (digitalRead(buttonPin) == HIGH) {
delay(10); // Debounce
}
delay(2000);
lcd.clear();
}
}