#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPins[] = {2, 3, 4, 5};
const int ledPins[] = {6, 7, 8};
const int rgbPins[] = {A0, A1, A2};
const int buzzerPin = 9; // Changed to digital pin 9
int correctAnswer;
int score = 0;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(buttonPins[i], INPUT);
}
for (int i = 0; i < 3; i++) {
pinMode(ledPins[i], OUTPUT);
}
for (int i = 0; i < 3; i++) {
pinMode(rgbPins[i], OUTPUT);
}
pinMode(buzzerPin, OUTPUT);
lcd.begin(16, 2);
}
void loop() {
int num1 = random(10, 100); // Two-digit numbers
int num2 = random(10, 100);
int operation = random(2); // 0 for addition, 1 for subtraction
if (operation == 0) {
correctAnswer = num1 + num2;
lcd.print(num1);
lcd.print(" + ");
lcd.print(num2);
} else {
correctAnswer = num1 - num2;
lcd.print(num1);
lcd.print(" - ");
lcd.print(num2);
}
int userAnswer = waitForButtonPress();
if (userAnswer == correctAnswer) {
showResult(true);
score++;
} else {
showResult(false);
}
delay(2000);
}
int waitForButtonPress() {
while (true) {
for (int i = 0; i < 4; i++) {
if (digitalRead(buttonPins[i]) == HIGH) {
return i + 1;
}
}
}
}
void showResult(bool correct) {
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[i], LOW);
}
if (correct) {
digitalWrite(ledPins[0], HIGH);
setColor(0, 255, 0);
tone(buzzerPin, 1000, 500);
} else {
digitalWrite(ledPins[1], HIGH);
setColor(255, 255, 0);
tone(buzzerPin, 500, 500);
}
delay(1000);
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[i], LOW);
}
setColor(0, 0, 0);
}
void setColor(int red, int green, int blue) {
analogWrite(rgbPins[0], red);
analogWrite(rgbPins[1], green);
analogWrite(rgbPins[2], blue);
}