Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

checar a resposta do jogador

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;
}

Sobre a função acima, se nenhum botão estiver sendo pressionado todos serão HIGH. Na minha cabeça, a unica maneira de não retornar indefinido é se você estiver mantendo pressionado o botão no exato momento que ela passa no if do botão que você está pressionando. Mas parece que não é assim que acontece, não precisa manter pressionado no exato momento. Na prática, parece que ela espera você apertar o botão para ler os if's, não entendi como isso acontece.

1 resposta
solução!

Agora entendi, no código final quando o resultado sai da função indefinido ele volta para o looping e executa a função novamente, e vai fazendo isso até o resultado ser diferente de indefinido