botão avançar e retroceder

(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.