1
resposta

Serial.println não le o estado do botao, mas nao esta dando erro

#define LED_VERMELHO 2

#define LED_AMARELO 3

#define LED_VERDE 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

int sequenciaLuzes[TAMANHO_SEQUENCIA];

void iniciaPortas(){ pinMode(LED_VERMELHO, OUTPUT); pinMode(LED_AMARELO, OUTPUT); pinMode(LED_VERDE, OUTPUT); pinMode(LED_AZUL, OUTPUT);

pinMode(BOTAO_VERMELHO,INPUT_PULLUP); pinMode(BOTAO_AMARELO,INPUT_PULLUP); pinMode(BOTAO_VERDE,INPUT_PULLUP); pinMode(BOTAO_AZUL,INPUT_PULLUP); }

void setup(){ iniciaPortas(); // iniciaJogo();

}

void iniciaJogo(){ sequenciaLuzes[0] = LED_AZUL; sequenciaLuzes[1] = LED_VERDE; sequenciaLuzes[2] = LED_VERMELHO; sequenciaLuzes[3] = LED_AMARELO;

}

void loop(){ /* for(int indice = 0; indice < TAMANHO_SEQUENCIA; indice++){ Pisca_LED(sequenciaLuzes[indice]); } */ int botaoPrecionado = checaRespostajogador(); int estadoVerde = digitalRead(BOTAO_VERDE);

Serial.println(checaRespostajogador());

} int checaRespostajogador(){ if(digitalRead(BOTAO_VERDE) == LOW){ return LED_VERDE; } if(digitalRead(BOTAO_AMARELO) == LOW){ return LED_AMARELO; } if(digitalRead(BOTAO_VERMELHO) == LOW){ return LED_VERMELHO; } if(digitalRead(BOTAO_AZUL) == LOW){ return LED_AZUL; }

return INDEFINIDO;

}

void piscatodos(){ digitalWrite(LED_VERMELHO, HIGH); digitalWrite(LED_AMARELO, HIGH); digitalWrite(LED_VERDE, HIGH); digitalWrite(LED_AZUL, HIGH); delay(UM_SEGUNDO); digitalWrite(LED_VERMELHO, LOW); digitalWrite(LED_AMARELO, LOW); digitalWrite(LED_VERDE, LOW); digitalWrite(LED_AZUL, LOW); delay(UM_SEGUNDO);

} /* void piscaSequencial(){ Pisca_LED(LED_VERMELHO); Pisca_LED(LED_AMARELO); Pisca_LED(LED_VERDE); Pisca_LED(LED_AZUL); delay(MEIO_SEGUNDO); }

void piscaSequencial2(){ Pisca_LED12(LED_VERMELHO); Pisca_LED12(LED_AMARELO); Pisca_LED12(LED_VERDE); Pisca_LED12(LED_AZUL); delay(MEIO_SEGUNDO); }

void Pisca_LED12(int portaled){ digitalWrite(portaled, HIGH); delay (UM_SEGUNDO); }

void Pisca_LED(int portaled){ digitalWrite(portaled, HIGH); delay(UM_SEGUNDO);

digitalWrite(portaled, LOW); delay(MEIO_SEGUNDO); */

1 resposta

Oi, Kevin! Como você está?

Bom, realmente não consegui identificar problema no seu código. No entanto, vou deixar aqui o código que testei e funcionou muito bem:

#define LED_VERDE 2
#define LED_AMARELO 3
#define LED_VERMELHO 4
#define LED_AZUL 5

#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
#define INDEFINIDO -1
int sequenciaLuzes[TAMANHO_SEQUENCIA];


void setup(){
    Serial.begin(9600);
    iniciaPortas();
    iniciaJogo();
}

void iniciaJogo(){
  sequenciaLuzes[0] = LED_AZUL;
  sequenciaLuzes[1] = LED_VERDE;
  sequenciaLuzes[2] = LED_VERMELHO;
  sequenciaLuzes[3] = LED_AMARELO;
}

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(){
    Serial.println(checaRespostaJogador());
}

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(UM_SEGUNDO); 
  digitalWrite(portaLed,LOW);
  delay(MEIO_SEGUNDO);
  return portaLed;
}

Apenas tenho uma sugestão: Não há um delay na hora de apertar o botão, e a informação passa muito rápido e talvez seja por isso que você não está conseguindo visualizar a checagem do botão. Uma dica é segurar o botão para poder visualizar no console :D

Fico à disposição.

Um forte abraço e bons estudos!!!