#include <Arduino.h>
#include <LiquidCrystal.h>
const int ledPin1 = 2;
const int ledPin2 = 3;
const int ledPin3 = 4;
const int ledPin4 = 5;
const int buttonPin1 = A0; // Analog pin for button 1
const int buttonPin2 = A1; // Analog pin for button 2
const int buttonPin3 = A2; // Analog pin for button 3
const int buttonPin4 = A3; // Analog pin for button 4
const int rs = 12, en = 11, d4 = 7, d5 = 6, d6 = 10, d7 = 9;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int score = 0;
int level = 1;
int correctButton = 0; // Store the correct button to be pressed
int buttonPressed = 0; // Store the button pressed by the player
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
lcd.begin(16, 2);
lcd.print("Level: ");
lcd.setCursor(0, 1);
lcd.print("Score: ");
}
void loop() {
lcd.setCursor(7, 0);
lcd.print(level);
// Generate random blinking pattern for each LED based on current level
for (int i = 0; i < level; i++) {
correctButton = random(1, 5); // Randomly choose the correct button
flashLED(correctButton); // Flash the corresponding LED
delay(1000); // Delay between each LED flash
}
// Check if any button is pressed
if (digitalRead(buttonPin1) == HIGH) buttonPressed = 1;
else if (digitalRead(buttonPin2) == HIGH) buttonPressed = 2;
else if (digitalRead(buttonPin3) == HIGH) buttonPressed = 3;
else if (digitalRead(buttonPin4) == HIGH) buttonPressed = 4;
// Check if the correct button is pressed
if (buttonPressed == correctButton) {
score++; // Increase score by 1
buttonPressed = 0; // Reset button pressed
}
// Update LCD display
lcd.setCursor(7, 1);
lcd.print(score);
delay(100); // Adjust delay as needed for button responsiveness
}
void flashLED(int ledNum) {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
switch (ledNum) {
case 1:
digitalWrite(ledPin1, HIGH);
break;
case 2:
digitalWrite(ledPin2, HIGH);
break;
case 3:
digitalWrite(ledPin3, HIGH);
break;
case 4:
digitalWrite(ledPin4, HIGH);
break;
default:
break;
}
}