Em meu codigo "resposta" retorna com o valor de 128 em vez de "nada" e que eu respondi a sequencia esse numero abaixou para 8 e depois foi para 9, porque isso aconteceu? o que foi de errado?
#define ledVerdeP 11
#define ledAmarelo 10
#define ledVermelho 9
#define ledVerdeS 8
#define botVerdeP 5
#define botAmarelo 4
#define botVermelho 3
#define botVerdeS 2
#define tamanhoSequencia 4
int sequenciaLuzes[tamanhoSequencia];
int rodada = 0;
int ledAcertados = 0;
#define NADA -1
enum ESTADOS{
usuarioRespondendo,
prontoProx,
fimJogoVitoria,
fimJogoPerda
};
void setup(){
iniciaPortas();
sequencia();
}
void iniciaPortas(){
pinMode(ledVerdeP,OUTPUT);
pinMode(ledAmarelo,OUTPUT);
pinMode(ledVermelho,OUTPUT);
pinMode(ledVerdeS,OUTPUT);
pinMode(botVerdeP,INPUT_PULLUP);
pinMode(botAmarelo,INPUT_PULLUP);
pinMode(botVermelho,INPUT_PULLUP);
pinMode(botVerdeS,INPUT_PULLUP);
Serial.begin(9600);
}
//sorteia nova sequencia -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void sequencia(){
int porta = analogRead(A0);
randomSeed(porta);
for (int i=0; i<tamanhoSequencia; i++){
sequenciaLuzes[i] = sorteiaCor();
}
}
int sorteiaCor(){
return random(ledVerdeS,ledVerdeP + 1);
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void loop(){
switch(estados()){
case prontoProx:
Serial.println("Pronto para a proxima rodada");
preparaProxRodada();
break;
case usuarioRespondendo:
Serial.println("O usuario esta respondendo.");
processaRespJog();
break;
case fimJogoVitoria:
Serial.println("Fim de Jogo, voce venceu");
break;
case fimJogoPerda:
Serial.println("Fim de Jogo, voce predeu");
break;
}
delay(500);
}
//estados-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
int estados(){
if (rodada <= tamanhoSequencia){
if (ledAcertados == rodada){
return prontoProx;
}else{
return usuarioRespondendo;
}
}else{
return fimJogoVitoria;
}
}
void preparaProxRodada(){
rodada++;
ledAcertados = 0;
if (rodada <= tamanhoSequencia){
piscaSEQUENCIAled();
}
}
void processaRespJog(){
int resposta = controleBotoes();
Serial.println(resposta);
if (resposta == nada){
return;
}
if (resposta == sequenciaLuzes[ledAcertados]){
ledAcertados++;
}else{
Serial.println("reposta errada.");
}
}
//controle dos botões-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
int controleBotoes(){
if (digitalRead(botVerdeP) == LOW){
return piscaLed(ledVerdeP);
}
if (digitalRead(botAmarelo) == LOW){
return piscaLed(ledAmarelo);
}
if (digitalRead(botVerdeS) == LOW){
return piscaLed(ledVerdeS);
}
if (digitalRead(botVermelho) == LOW){
return piscaLed(ledVermelho);
return NADA;
}
}
//sequencia de leds-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void piscaSEQUENCIAled(){
for (int i=0; i<rodada; i++){
piscaLed(sequenciaLuzes[i]);
}
}
int piscaLed(int led){
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(500);
return led;
}