/*
Wokwi | questions
uhhhh what???? what do i even do??
Stani4a - Monday, April 13, 2026 9:37 AM
Project Link: https://wokwi.com/projects/461190067875556353?gh=1
*/
#include <LiquidCrystal_I2C.h>
const int BUZZ_PIN = 4;
const int BTN_1_PIN = 19;
const int BTN_2_PIN = 15;
const int BLU_LED_PIN = 18;
const int GRN_LED_PIN = 5;
const int YEL_LED_PIN = 17;
const int RED_LED_PIN = 16;
int timer = 0;
bool reset = LOW;
bool ka = LOW;
bool kk = LOW;
bool ak = LOW;
bool aa = HIGH;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(BTN_1_PIN, INPUT_PULLUP);
pinMode(BTN_2_PIN, INPUT_PULLUP);
pinMode(BLU_LED_PIN, OUTPUT);
//pinMode(6, INPUT); // ???
pinMode(GRN_LED_PIN, OUTPUT);
pinMode(YEL_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(BUZZ_PIN, OUTPUT);
randomSeed(analogRead(35));
}
void loop() {
if (ka == LOW) {
if (reset == HIGH) {
lcd.clear();
reset = LOW;
delay(200);
}
lcd.setCursor(0, 0);
lcd.print("Press to start!");
if (digitalRead(BTN_1_PIN) == LOW || digitalRead(BTN_2_PIN) == LOW) {
lcd.clear();
lcd.print("GAME ON!!!");
if (kk == LOW) {
lcd.setCursor(0, 1);
lcd.print("1,");
digitalWrite(RED_LED_PIN, HIGH);
tone(BUZZ_PIN, 1000);
delay(100);
noTone(BUZZ_PIN);
delay(700);
lcd.print("2,");
digitalWrite(YEL_LED_PIN, HIGH);
digitalWrite(RED_LED_PIN, LOW);
tone(BUZZ_PIN, 1000);
delay(100);
noTone(BUZZ_PIN);
delay(700);
lcd.print("3,");
digitalWrite(GRN_LED_PIN, HIGH);
digitalWrite(YEL_LED_PIN, LOW);
tone(BUZZ_PIN, 1000);
delay(100);
delay(700);
lcd.print("wait,");
digitalWrite(GRN_LED_PIN, LOW);
int waitTime = random(1000, 10001);
delay(waitTime);
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YEL_LED_PIN, HIGH);
digitalWrite(GRN_LED_PIN, HIGH);
digitalWrite(BLU_LED_PIN, HIGH);
noTone(BUZZ_PIN);
tone(BUZZ_PIN, 2000);
kk = HIGH;
ka = HIGH;
}
if (digitalRead(BTN_1_PIN) == LOW || digitalRead(BTN_2_PIN) == LOW) {
aa = LOW;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CHEAT! You lose!");
} else if (aa == HIGH) {
lcd.clear();
lcd.print("GO!");
while (digitalRead(BTN_1_PIN) == HIGH && digitalRead(BTN_2_PIN) == HIGH) {
timer++;
delay(1);
digitalWrite(BLU_LED_PIN, LOW);
}
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YEL_LED_PIN, LOW);
digitalWrite(GRN_LED_PIN, LOW);
digitalWrite(BLU_LED_PIN, LOW);
noTone(BUZZ_PIN);
tone(BUZZ_PIN, 1000);
lcd.setCursor(0, 0);
lcd.print("Score: ");
lcd.setCursor(7, 0);
lcd.print(timer);
delay(300);
noTone(BUZZ_PIN);
delay(500);
lcd.setCursor(0, 1);
lcd.print("Again?");
while (digitalRead(BTN_1_PIN) == HIGH || digitalRead(BTN_2_PIN) == HIGH) {
ka = LOW;
kk = LOW;
ak = LOW;
aa = HIGH;
timer = 0;
reset = HIGH;
}
}
}
}
}