I am making a trivia game code, but it always seems to blow through my if statements and select a. I have confirmed the the buttons do work by adding a serial digital read for my buttons. here is the code that I have so far
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
int LED0 = 22; //status light, ready (blue)
int LED1 = 23; //incorrect answer (red)
int LED2 = 24; //correct answer (green)
int button_pin = 25; //start game button
int button_a = 26; //answer choice A
int button_b = 27; //answer choice B
int button_c = 28; //answer choice C
int button_d = 29; //answer choice D
int Score = 0;
void setup() {
lcd.init(); // Initialize the lcd display.
lcd.init();
lcd.backlight(); // Print a startup message on the LCD.
lcd.setCursor(0, 0);
lcd.print("--------------------");
lcd.setCursor(6, 1);
lcd.print("GEEEKPI");
lcd.setCursor(1, 2);
lcd.print("Arduino IIC Screen");
lcd.setCursor(0, 3);
lcd.print("--------------------");
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(button_pin, INPUT_PULLUP);
pinMode(button_a, INPUT_PULLUP);
pinMode(button_b, INPUT_PULLUP);
pinMode(button_c, INPUT_PULLUP);
pinMode(button_d, INPUT_PULLUP);
digitalWrite(LED1, HIGH); //Show that the system is not ready
delay(1000);
lcd.clear(); //Clear the LCD startup message.
delay(300);
digitalWrite(LED1, LOW); //The game is ready to be started.
digitalWrite(LED2, HIGH); //Show that the system is ready to be started.
}
void loop() {
if (digitalRead(button_pin) == LOW) { //Wait for the user to press start.
digitalWrite(LED2, LOW);
delay(1000);
digitalWrite(LED0, HIGH); //Turn on the system status light.
delay(1000);
lcd.setCursor(0, 0);
lcd.print("THE GAME WILL START"); //Tell the user "THE GAME WILL START SOON..."
lcd.setCursor(0, 1);
lcd.print("SOON...");
delay(4500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("To submit an answer,"); //Make the LCD say "To submit an answer, press the button that represents your answer choice."
lcd.setCursor(0, 1);
lcd.print("press the button");
lcd.setCursor(0, 2);
lcd.print("that represents your");
lcd.setCursor(0, 3);
lcd.print("answer choice.");
delay(5500);
lcd.clear();
delay(1000);
lcd.setCursor(0, 0);
lcd.print("TODAY'S CATEGORY IS"); // Tell the user "TODAY'S CATEGORY IS MOVIES
delay(1500);
lcd.setCursor(7, 1);
lcd.print("MOVIES");
delay(2500);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Question 1"); //Question 1
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("When was the first");
lcd.setCursor(0, 1);
lcd.print("movie filmed?");
delay(4000);
lcd.setCursor(0, 2);
lcd.print("A) 1880 B) 1884");
lcd.setCursor(0, 3);
lcd.print("C) 1888 D) 1892");
delay(500);
while (digitalRead(button_pin == HIGH)) { //This statement is only being used to create an if loop.
if (digitalRead(button_a == LOW)) { //Check to see if the player selected answer A.
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("C) 1888");
delay(2000);
break;
} else if (digitalRead(button_b == LOW)) { //Check to see if the player selected answer B.
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("C) 1888");
delay(2000);
break;
} else if (digitalRead(button_c == LOW)) { //Check to see if the player selected answer C.
delay(100);
digitalWrite(LED2, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Correct!");
Score = Score + 1;
delay(1500);
break;
} else if (digitalRead(button_d == LOW)) { //Check to see if the player selected answer D.
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("C) 1888");
delay(2000);
break;
}
}
lcd.clear();
digitalWrite(LED1, LOW); //This resets the "correct" and "incorrect" light indicators.
digitalWrite(LED2, LOW);
lcd.setCursor(4, 0);
lcd.print("Your Score Is"); //Tells the user their current score.
lcd.setCursor(9, 1);
lcd.print(Score);
delay(2000);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Question 2"); //Question 2
delay(1500);
lcd.clear();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("When was Home Alone");
lcd.setCursor(0, 1);
lcd.print("filmed?");
delay(3000);
lcd.setCursor(0, 2);
lcd.print("A) 1989 B) 1990");
lcd.setCursor(0, 3);
lcd.print("C) 1991 D) 1992");
delay(500);
while (digitalRead(button_pin == HIGH)) {
if (digitalRead(button_a == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("B) 1990");
delay(2000);
break;
} else if (digitalRead(button_b == LOW)) {
delay(100);
digitalWrite(LED2, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Correct!");
Score = Score + 1;
delay(1500);
break;
} else if (digitalRead(button_c == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("B) 1990");
delay(2000);
break;
} else if (digitalRead(button_d == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("B) 1990");
delay(2000);
break;
}
}
lcd.clear();
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
lcd.setCursor(4, 0);
lcd.print("Your Score Is");
lcd.setCursor(9, 1);
lcd.print(Score);
delay(2000);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Question 3"); //Question 3
delay(1500);
lcd.clear();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("When was A Bugs Life");
lcd.setCursor(2, 1);
lcd.print("filmed?");
delay(3000);
lcd.setCursor(0, 2);
lcd.print("A) 1995 B) 1996");
lcd.setCursor(0, 3);
lcd.print("C) 1997 D) 1998");
delay(500);
while (digitalRead(button_pin == HIGH)) {
if (digitalRead(button_a == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("D) 1998");
delay(2000);
break;
} else if (digitalRead(button_b == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("D) 1998");
delay(2000);
break;
} else if (digitalRead(button_c == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("D) 1998");
delay(2000);
break;
} else if (digitalRead(button_d == LOW)) {
delay(100);
digitalWrite(LED2, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Correct!");
Score = Score + 1;
delay(1500);
break;
}
}
lcd.clear();
digitalWrite(LED1, LOW); //This resets the "correct" and "incorrect" light indicators.
digitalWrite(LED2, LOW);
lcd.setCursor(4, 0);
lcd.print("Your Score Is"); //Tells the user their current score.
lcd.setCursor(9, 1);
lcd.print(Score);
delay(2000);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Question 4"); //Question 4
delay(1500);
lcd.clear();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("When did Walt");
lcd.setCursor(2, 1);
lcd.print("Disney Die?");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("A) 1966 B) 1967");
lcd.setCursor(0, 1);
lcd.print("C) 1968 D) 1969");
while (digitalRead(button_pin == HIGH)) {
if (digitalRead(button_a == LOW)) {
delay(100);
digitalWrite(LED2, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Correct!");
Score = Score + 1;
delay(1500);
break;
} else if (digitalRead(button_b == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("A) 1966");
delay(2000);
break;
} else if (digitalRead(button_c == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("A) 1966");
delay(2000);
break;
} else if (digitalRead(button_d == LOW)) {
delay(100);
digitalWrite(LED1, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Incorrect!");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The correct answer");
lcd.setCursor(0, 1);
lcd.print("is...");
delay(1500);
lcd.setCursor(0, 2);
lcd.print("A) 1966");
delay(2000);
break;
}
}
}
}