Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Debounce no código

Pelo visto ao retornar a função piscaLed() como resposta da leitura, o tempo que ela fica processando é equivalente a um tempo de Debounce importante para execução correta do código, visto que ele aguarda 1,5 segundo para executar o próximo loop e considerar que o botão foi pressionado apenas uma unica vez, caso não tivesse esse tempo o arduino iria considerar que o botão foi apertado diversas vezes necessitando algum tratamento da entrada lida. Acredito que seria muito interessante falar da importância do debounce para outros alunos poderem fazer projetos semelhantes e caso esbarrem no problema que o arduino considera que o botão foi pressionado varias vezes sendo que foi apertado uma unica vez, saberem uma forma de solucionar

3 respostas
solução!

Oi Rafael, como você está? Espero que esteja bem ^-^

Muito interessante sua colocação. Em muitos casos, o tempo de espera é crucial para evitar o disparo de vários eventos, uma vez que temos que levar em consideração que o nosso código é executado dentro de um loop. E isso é tão importante, que dificilmente você encontrará algum código de arduino sem a utilização de algum tempo de espera.

Porém, no caso em específico da função piscaLed o delay é apenas para fazer com que o led acenda e apague após uma quantidade mínima de segundo, pois esse é o comportamento esperado. Poderíamos por exemplo, apenas acender o led e retornar o número da porta do led, sem a utilização do sleep, portanto, esse delay não interfere na leitura dos botões.

Temos uma sequência de atividades: botão é apertado > algo acontece > ficamos no loop esperando que algum botão seja apertado > algo acontece > voltamos ao loop e assim até que o programa seja finalizado. Os botões estão a todo momento sendo checados, talvez ocorra interferência se apertar todos de uma única vez, mas isso é um caso a se ver com mais cautela.

Qualquer dúvida estou por aqui, a gente vai conversando.

Abraços e bons estudos!

Fez sentido para você, Rafael?

Se sim, marque o tópico como solução para que possa ajudar outros alunos. Caso não, a gente pode conversar a respeito.

Abraços e bons estudos!

Oii, esqueci de responder

Para mim fez sentido em partes, pois inicialmente na aula quando ele verifica a leitura do arduino, quando ele aperta algum botão, o numero correspondente aparece diversas vezes, e quando ele insere que o retorno da função é piscar o led o retorno do numero só ocorre uma unica vez (sinalizando uma unica leitura do evento botão acionado).

Ainda acho que a função sleep desempenha um papel importante já que é feito a leitura se o botão esta pressionado e não uma borda de decida (ou subida como é o caso da aula em que os botões estão em PullUp) que n foi enfatizado.

portando acredito que caso não fosse implementado o Sleep só seria possível jogar a primeira rodada e as rodadas que todos os Leds piscados forem o mesmo.