(deleted)
Esta parte do código:
if (!digitalRead(botaoInc))botao1 = true;
if (digitalRead(botaoInc)&& botao1){
numero ++;
botao1 = false;
Está a fazer aquilo a que se chama de detecção de flanco, mas usando uma forma mais abreviada de programar o if.
O código equivalente seria:
if ( digitalRead(botaoInc) == 0 ) {
botao1 = true; //se o botão não está pressionado, a variável botao1 passa a verdadeira. Nota que se o botão estiver a ser pressionado, esta variável não muda para 1.
}
if (digitalRead(botaoInc)&& botao1){ //se o botão está a ser pressionado e no ciclo anterior não estava a ser pressionado (botao1 = 1), então executa o que está dentro do if.
numero ++; //incrementa a variável
botao1 = false; //coloca botao1 em falso para não executar de novo o código.
A sequência é assim:
Não estás a pressionar o botão, variável botao1 está com o valor verdadeiro, ou seja o primeiro if executa.
Pressionas o botao, o primeiro if deixa de executar. O segundo if passa a executar e na primeira vez que executa coloca a variável botao1 a falso.
Como a variável botao1 é falsa, o segundo if não executa.
Agora levantas o dedo do botao, o primeiro if executa e coloca a variavel botao1 a verdadeiro.
Quando carregares de novo no botão, o segundo if executa e incrementa a variável.
Assim garantes que a variável é incrementada uma vez por cada toque no botão e não enquanto o botão está pressionado.
(deleted)
De nada... é para isso que as pessoas participam no fórum.
Este mecanismo é também bastante comum em mais situações e diria ser um dos mecanismos básicos de programação.