This is essentially my wiring just with different pins chosen:


#include <LiquidCrystal.h>
/*(RS, E, D4, D5, D6, D7)*/
LiquidCrystal lcd(1,2,19,18,17,16);
// Give name to all LEDs from pin 10 to 13
int led0 = 6;
int led1 = 7;
int led2 = 8;
int led3 = 9;
//Give name to all buttons from pin 0 to 3
int button0 = 10;
int button1 = 11;
int button2 = 12;
int button3 = 13;
//Setting both states to HIGH when not pressed
int button0State = HIGH;
int button1State = HIGH;
int button2State = HIGH;
int button3State = HIGH;
//Button states previously recorded, setting to HIGH (not pressed)
int lastButton0State = HIGH;
int lastButton1State = HIGH;
int lastButton2State = HIGH;
int lastButton3State = HIGH;
unsigned long debounceDelay = 50;
//Give name to the speaker (pin 8)
int speaker = 5;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
analogWrite(0,80); //Setting contrast
lcd.begin(16,2); //Dimensions of LCD screen
lcd.print("Welcome!");
// initialize the digital pin as an output.
pinMode(led0, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
//initialize buttons as input.
pinMode(button0, INPUT_PULLUP);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
}//End setup
// the loop routine runs over and over again forever:
void loop() {
//Debouncing buttons
int reading0 = digitalRead(button0);
int reading1 = digitalRead(button1);
int reading2 = digitalRead(button2);
int reading3 = digitalRead(button3);
if (reading0 == lastButton0State && reading1 == lastButton1State && reading2 == lastButton2State && reading3 == lastButton3State){
return; // Do nothing if no change
}
delay (debounceDelay); // Debounce
// Re-read so we can catch both buttons down at once
reading0 = digitalRead(button0);
reading1 = digitalRead(button1);
reading2 = digitalRead(button2);
reading3 = digitalRead(button3);
// save for next time
lastButton0State = reading0;
lastButton1State = reading1;
lastButton2State = reading2;
lastButton3State = reading3;
//Continue after debouncing
WelcomeLight();
int SIZE = 25;
int sequence[SIZE];
while(1){
//First we make the random sequence (values from 0 to 3)
randomSeed(analogRead(A0));
for(int j=0; j < SIZE; j++){
sequence[j] = random(0, 4);
}
//Now, the game starts
int led = 0;
int seq = 0;
int reading = 1;
while (seq == 0){
showsequence(sequence, reading);
seq = readsequence(sequence, reading, led);
if (seq == 0) //well done
{
reading ++;
}
}//End while
}//End while
}//End loop
//Plays before game
void WelcomeLight(){
int i = 0;
for (i=0; i <4; i++){
tone(speaker, NOTE_A3);
digitalWrite(led0, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(200);
tone(speaker, NOTE_B3);
digitalWrite(led0, LOW);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(200);
tone(speaker, NOTE_C3);
digitalWrite(led0, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
delay(200);
tone(speaker, NOTE_D3);
digitalWrite(led0, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(200);
}//End for loop
for (i=0; i <3; i++){
tone(speaker, NOTE_F3);
digitalWrite(led0, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(100);
noTone(speaker);
digitalWrite(led0, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(100);
noTone(speaker);
}//End for
delay(200);
}//End welcome lights
//When the player loses
void FailLight(){
tone(speaker, NOTE_G3);
digitalWrite(led0, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(200);
tone(speaker, NOTE_F3);
digitalWrite(led0, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(200);
tone(speaker, NOTE_E3);
digitalWrite(led0, LOW);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(200);
tone(speaker, NOTE_D3);
digitalWrite(led0, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(200);
for (int i=0; i <3; i++){
tone(speaker, NOTE_A2);
digitalWrite(led0, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(100);
noTone(speaker);
digitalWrite(led0, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(100);
}//End for
delay(200);
}//End fail method
//Returns the state of the button
int ReadButton(){
button0 = digitalRead(10);
Serial.print("button0: ");
Serial.println(button0);
button1 = digitalRead(11);
Serial.print("button1: ");
Serial.println(button1);
button2 = digitalRead(12);
Serial.print("button2: ");
Serial.println(button2);
button3 = digitalRead(13);
Serial.print("button3: ");
Serial.println(button3);
if(button0 == LOW){
digitalWrite(led0, HIGH);
tone(speaker, NOTE_E4);
delay(200);
noTone(speaker);
digitalWrite(led0, LOW);
return 0;
}//End if
if(button1 == LOW){
digitalWrite(led1, HIGH);
tone(speaker, NOTE_A4);
delay(200);
noTone(speaker);
digitalWrite(led1, LOW);
return 1;
}//End if
if(button2 == LOW){
digitalWrite(led2, HIGH);
tone(speaker, NOTE_D4);
delay(200);
noTone(speaker);
digitalWrite(led2, LOW);
return 2;
}//End if
if(button3 == LOW){
digitalWrite(led3, HIGH );
tone(speaker, NOTE_G4);
delay(200);
noTone(speaker);
digitalWrite(led3, LOW);
return 3;
}//End if
else{
return -1;
}
}//End read button method
//Method that shows the current sequence (until 'count') with lights and sounds
void showsequence (int array[],int counts){
int i = 0;
while(i < counts){
int led = array[i];
int delayvalue = 500 - (3 * counts);
switch (led){
case 0:
digitalWrite(led0, HIGH);
tone(speaker, NOTE_E4);
delay(delayvalue);
noTone(speaker);
digitalWrite(led0, LOW);
delay(delayvalue/2);
i++;
break;
case 1:
digitalWrite(led1, HIGH);
tone(speaker, NOTE_A4);
delay(delayvalue);
noTone(speaker);
digitalWrite(led1, LOW);
delay(delayvalue/2);
i++;
break;
case 2:
digitalWrite(led2, HIGH);
tone(speaker, NOTE_D4);
delay(delayvalue);
noTone(speaker);
digitalWrite(led2, LOW);
delay(delayvalue/2);
i++;
break;
case 3:
digitalWrite(led3, HIGH);
tone(speaker, NOTE_G4);
delay(delayvalue);
noTone(speaker);
digitalWrite(led3, LOW);
delay(delayvalue/2);
i++;
break;
}//End of switch case
}//End while
}//End show sequence
//Compares sequence with buttons pushed
int readsequence(int seq[], int current, int led){
int i = 0;
while(i < current){
int button = ReadButton();
Serial.print("button = ");
Serial.println(button);
Serial.print("seq = ");
Serial.println(seq[i]);
if(button != seq[i] && button != -1) //(game ends)
{
FailLight();
return -1;
}//End if
if(button == seq[i]) // (game continues)
{
i++;
}//End if
}//End while
delay(250);
return 0;
}//End read sequence