basicamente ele da o erro "exit status 1 'estadoatual' was not declared in this scope"
#define LED_VERDE 2
#define LED_AMARELO 3
#define LED_VERMELHO 4
#define LED_AZUL 5
#define INDEFINIDO -1
#define BOTAO_VERDE 8
#define BOTAO_AMARELO 9
#define BOTAO_VERMELHO 10
#define BOTAO_AZUL 11
#define UM_SEGUNDO 1000
#define MEIO_SEGUNDO 500
#define TAMANHO_SEQUENCIA 4
enum estados{
PRONTO_PARA_PROX_RODADA,
USUARIO_RESPONDENDO,
JOGO_FINALIZADO_SUCESSO,
JOGO_FINALIZADO_FALHA
};
int sequencialuzes[TAMANHO_SEQUENCIA];
int rodada = 0;
void setup() {
Serial.begin(9600);
iniciaportas();
iniciajogo();
}
void iniciajogo() {
int numerojogo = analogRead(0);
randomSeed(numerojogo);
for(int indice = 0; indice < TAMANHO_SEQUENCIA; indice ++){
sequencialuzes[indice] = sorteiacor();
}
}
int sorteiacor(){
return random(LED_VERDE, LED_AZUL + 1);
}
void iniciaportas(){
pinMode(LED_VERDE,OUTPUT);
pinMode(LED_AMARELO,OUTPUT);
pinMode(LED_VERMELHO,OUTPUT);
pinMode(LED_AZUL,OUTPUT);
pinMode(BOTAO_VERDE, INPUT_PULLUP);
pinMode(BOTAO_AMARELO, INPUT_PULLUP);
pinMode(BOTAO_VERMELHO, INPUT_PULLUP);
pinMode(BOTAO_AZUL, INPUT_PULLUP);
}
void loop() {
switch(estadoatual()) {
case PRONTO_PARA_PROX_RODADA:
Serial.println("pronto para próxima rodada");
preparanovarodada();
break;
case USUARIO_RESPONDENDO:
Serial.println("usuário respondendo");
break;
case JOGO_FINALIZADO_SUCESSO:
Serial.println("jogo finalizado sucesso");
break;
case JOGO_FINALIZADO_FALHA:
Serial.println("jogo finalizado falha");
break;
}
delay(500);
}
void preparanovarodada(){
rodada++;
tocaledsdarodada();
}
}
int estadoatual(){
if(rodada < TAMANHO_SEQUENCIA) {
return PRONTO_PARA_PROX_RODADA;
}else{
return JOGO_FINALIZADO_SUCESSO;
}
}
void tocaledsdarodada(){
for(int indice = 0; indice < TAMANHO_SEQUENCIA; indice++) {
piscaled(sequencialuzes[indice]);
}
}
int checarespostajogador(){
if(digitalRead(BOTAO_VERDE) == LOW){
return piscaled(LED_VERDE);
}
if(digitalRead(BOTAO_AMARELO) == LOW){
return piscaled(LED_AMARELO);
}
if(digitalRead(BOTAO_VERMELHO) == LOW){
return piscaled(LED_VERMELHO);
}
if(digitalRead(BOTAO_AZUL) == LOW){
return piscaled(LED_AZUL);
}
return INDEFINIDO;
}
int piscaled (int portaled) {
digitalWrite(portaled,HIGH);
delay(MEIO_SEGUNDO);
digitalWrite(portaled,LOW);
delay(MEIO_SEGUNDO);
return portaled;
}
void piscasequencia1() {
piscaled(LED_VERDE);
piscaled(LED_AMARELO);
piscaled(LED_VERMELHO);
piscaled(LED_AZUL);
delay(MEIO_SEGUNDO);
}
void piscasequencia2(){
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_AMARELO, HIGH);
digitalWrite(LED_VERMELHO, HIGH);
digitalWrite(LED_AZUL, HIGH);
delay(UM_SEGUNDO);
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARELO, LOW);
digitalWrite(LED_VERMELHO, LOW);
digitalWrite(LED_AZUL, LOW);
delay(MEIO_SEGUNDO);
}