ARDUINO MEGA 2560 ARDUINO MEGA 2560 J.L.G.C | Page 73

void leeSecuencia(){

int flag = 0;

for(int i = 0; i < nivelActual; i++){

flag = 0;

while(flag == 0){

if(digitalRead(PUL_VERDE) == LOW){

digitalWrite(LEDS_VERDE, HIGH);

SecuenciaLeida[i] = LEDS_VERDE;

flag = 1;

delay(400);

if(SecuenciaLeida[i] != secuencia[i]){

secuenciaError();

return;

}

digitalWrite(LEDS_VERDE, LOW);

}

if(digitalRead(PUL_ROJO) == LOW){

digitalWrite(LEDS_ROJO, HIGH);

SecuenciaLeida[i] = LEDS_ROJO;

flag = 1;

delay(400);

if(SecuenciaLeida[i] != secuencia[i]){

secuenciaError();

return;

}

digitalWrite(LEDS_ROJO, LOW);

}

if(digitalRead(PUL_AZUL) == LOW){

digitalWrite(LEDS_AZUL, HIGH);

SecuenciaLeida[i] = LEDS_AZUL;

flag = 1;

delay(400);

if(SecuenciaLeida[i] != secuencia[i]){

secuenciaError();

return;

}

digitalWrite(LEDS_AZUL, LOW);

}

if(digitalRead(PUL_AMARILLO) == LOW){

digitalWrite(LEDS_AMARILLO, HIGH);

SecuenciaLeida[i] = LEDS_AMARILLO;

flag = 1;

delay(400);

if(SecuenciaLeida[i] != secuencia[i]){

secuenciaError();

return;

}

digitalWrite(LEDS_AMARILLO, LOW);

}

}

}

secuenciaCorrecta();

}

void generaSecuencia(){

randomSeed(analogRead(5)); // randomSeed(millis());

for(int i = 0; i < MaximiNivel; i++){

secuencia[i] = random(2,6);

}

}

void TonoError(){

for(int i = 0; i < 4; i++){

digitalWrite(BUZZER, HIGH);

delay(150);

digitalWrite(BUZZER, LOW);

delay(50);

}

}

void secuenciaError(){

digitalWrite(LEDS_AMARILLO, HIGH);

digitalWrite(LEDS_AZUL, HIGH);

digitalWrite(LEDS_ROJO, HIGH);

digitalWrite(LEDS_VERDE, HIGH);

delay(800);

digitalWrite(LEDS_AMARILLO, LOW);

digitalWrite(LEDS_AZUL, LOW);

digitalWrite(LEDS_ROJO, LOW);

digitalWrite(LEDS_VERDE, LOW);

delay(350);

TonoError();

velocidad = 500;

nivelActual = 4;

inicio();

}

void secuenciaCorrecta(){

if(nivelActual < MaximiNivel){

digitalWrite(BUZZER, HIGH);

delay(300);

digitalWrite(BUZZER, LOW);

nivelActual++;

delay(450);

}

if(nivelActual == MaximiNivel){

digitalWrite(LEDS_AMARILLO, HIGH);

digitalWrite(LEDS_AZUL, HIGH);

digitalWrite(LEDS_ROJO, HIGH);

digitalWrite(LEDS_VERDE, HIGH);

digitalWrite(BUZZER, HIGH);

delay(5000);

digitalWrite(BUZZER, LOW);

inicio();

velocidad = 500;

nivelActual = 4;

}

}

70