#define btn1 19
#define btn2 21
#define btn3 22
#define btn4 23
#define ledVer 12
#define ledAm 13
#define ledAz 14
#define ledV 27
#define JV 5
#define JH 18
#define JS 4
int numAtualSorteado = 0;
int numSorteados[20];
int numAtualEscolhido = 0;
int numEscolhidos[20];
int nivel = 0;
int verifica = 0;
bool sortear = true;
void setup()
{
Serial.begin(9600);
pinMode(btn1, INPUT_PULLUP); //BOTAO AMARELO
pinMode(btn2, INPUT_PULLUP); //BOTAO VERDE
pinMode(btn3, INPUT_PULLUP);
pinMode(btn4, INPUT_PULLUP);
pinMode(JH, INPUT_PULLUP);
pinMode(JV, INPUT_PULLUP);
pinMode(JS, INPUT_PULLUP);
pinMode(ledVer, OUTPUT); //LED VERDE
pinMode(ledAm, OUTPUT); //LED AMARELO
pinMode(ledAz, OUTPUT);
pinMode(ledV, OUTPUT);
map(analogRead(JH), 0, 1023, -600, 600);
randomSeed(analogRead(0));
delay(3000);
}
void loop()
{
bool Cima = false;
bool selpressed = digitalRead(JS) == LOW;
Serial.println(analogRead(JH));
Serial.println("teste");
if(digitalRead(JH)==100){
Serial.println("teste2");
Cima = true;
}
if(nivel != 21)
{
if(sortear)
{
numAtualSorteado = random(1,5);
numSorteados[nivel] = numAtualSorteado;
mostrarSequencia();
}
sortear = false;
if(digitalRead(btn1) == 0)
{
Serial.println("btn1");
numAtualEscolhido = 1;
verificar(btn1, 100);
}
else if(Cima == true){
Serial.println("Joy cima");
numAtualEscolhido = 1;
verificar(btn1,100);
}
else if(digitalRead(btn2) == 0)
{
Serial.println("btn2");
numAtualEscolhido = 2;
verificar(btn2, 200);
}
else if(digitalRead(btn3) == 0){
Serial.println("btn3");
numAtualEscolhido = 3;
verificar(btn3,300);
}
else if(digitalRead(btn4)==0){
Serial.println("btn4");
numAtualEscolhido = 4;
verificar(btn4,400);
}
}
else
{
reiniciar();
}
}
//SEQUÊNCIA ATUAL - MOSTRA A SEQÊNCIA ATUAL COM UMA PAUSA ENTRE A SEQUÊNCIA E COM EFEITO SONORO PARA CADA LED
void mostrarSequencia()
{
for(int i=0; i<=nivel; i++)
{
switch(numSorteados[i])
{
case 1:
digitalWrite(ledAm, HIGH);
Serial.println("pisca led amar");
delay(500);
digitalWrite(ledAm, LOW);
delay(500);
break;
case 2:
digitalWrite(ledVer, HIGH);
Serial.println("pisca led ver");
delay(500);
digitalWrite(ledVer, LOW);
delay(500);
break;
case 3:
digitalWrite(ledAz, HIGH);
Serial.println("pisca led az");
delay(500);
digitalWrite(ledAz, LOW);
delay(500);
break;
case 4:
digitalWrite(ledV, HIGH);
Serial.println("pisca led verm");
delay(500);
digitalWrite(ledV, LOW);
delay(500);
break;
}
}
}
//VERIFICA A ESCOLHA - COMPARA A ESCOLHA COM O NÚMERO SORTEADO NA SEQUÊNCIA
void verificar(int pinoSaida, int som)
{
if(numAtualEscolhido == numSorteados[verifica])
{
digitalWrite(pinoSaida, HIGH);
delay(500);
digitalWrite(pinoSaida, LOW);
delay(500);
if(verifica == nivel)
{
nivel++;
verifica = 0;
sortear = true;
}
else
{
verifica++;
}
}
else
escolhaErrada();
}
//ESCOLHA DA SEQUÊNCIA ERRADA - FAZ UM EFEITO NOS LEDS E EFEITOS SONOROS
void escolhaErrada()
{
for(int i=0; i<=3; i++)
{
digitalWrite(ledAm, HIGH);
digitalWrite(ledVer, HIGH);
digitalWrite(ledAz, HIGH);
digitalWrite(ledV, HIGH);
delay(100);
digitalWrite(ledAm, LOW);
digitalWrite(ledVer, LOW);
digitalWrite(ledAz, LOW);
digitalWrite(ledV, LOW);
delay(100);
}
// noTone(12);
for(int i=0; i<=10; i++)
{
numSorteados[i] = 0;
}
reiniciar();
}
//REINICIA O JOGO - SETA TODAS AS VARIÁVEIS PARA O ESTADO INICIAL E FAZ UM EFEITO COM OS LEDS
void reiniciar()
{
digitalWrite(ledAm, HIGH);
digitalWrite(ledVer, HIGH);
digitalWrite(ledAz, HIGH);
digitalWrite(ledV, HIGH);
delay(1000);
digitalWrite(ledAm, LOW);
digitalWrite(ledVer, LOW);
digitalWrite(ledAz, LOW);
digitalWrite(ledV, LOW);
delay(1000);
nivel = 0;
sortear = true;
verifica = 0;
}