arduino mega 2560->contagem regressiva de tempo

boas
eu e um colega meu estamos a fazer um contador decrescente só que quando ele chega a zero ele não pára
como faço para que quando chegue a zero o contador pare em zero?
este é o código:

 buttonState = digitalRead(11);
if(buttonState==HIGH){
    contador3=contador3-1;
    if(contador3>0){
      contador3=contador3;
      contador4=contador4;
    }
    if(contador3==0){
      contador4=contador4-1;
      if(contador4==0){
    contador1=contador1-1;
    }      
      contador3=10; 
    }    
    if(contador4==0){
      contador4=6;
    }

    if(contador1==0){
      contador1=10;
      contador2=contador2-1;
    }
  }
}

Ricardo, o seu post é uma desgraça!
Vamos por partes:
1º) Edite o post, seleccione o código e clique no botão com o símbolo'#' que está na barra de ferramentas. Isso fará que o código fique numa caixa própria para o efeito que o torna mais legível.
2º) Tratamos do código. Há aí muito desperdício, muita coisa repetida e muita coisa que precisa de ser alterada.

Olá!

Eu não entendi muito bem sua pergunta mas, se quer que a contagem seja executada apenas uma vez.
Mova as funções para o setup ou crie uma condição adicional.

Substitua:

  while(1){

Por:

  if(executar == true){
executar = false;

Adicione isto no começo do programa (variável global).

boolean executar = true;

Abraço.

Fernando Garcia

Isto não é o código todo...
Onde estão definidas as variáveis?

O bubulindo tem razão, a primeira vez havia mais código.

int contador1=2;//MINUTOS
int contador2=1;//MINUTOS
int contador3=1;//SEGUNDOS
int contador4=1;//SEGUNDOS
const int inc=11;
void setup() {
  pinMode(23, OUTPUT);//SEGUNDOS
  pinMode(25, OUTPUT);//SEGUNDOS
  pinMode(27, OUTPUT);//SEGUNDOS
  pinMode(29, OUTPUT);//SEGUNDOS
  pinMode(31,OUTPUT);//ACTIVAR SEGUNDOS
  pinMode(33,OUTPUT);//ACTIVAR SEGUNDOS
  pinMode(22, OUTPUT);//MINUTOS
  pinMode(24, OUTPUT);//MINUTOS
  pinMode(26, OUTPUT);//MINUTOS
  pinMode(28, OUTPUT);//MINUTOS
  pinMode(30, OUTPUT);//ACTIVAR MINUTOS
  pinMode(32, OUTPUT);//ACTIVAR MINUTOS
}
void loop(){

  while(1){

   buttonState = digitalRead(inc);

  if(buttonState==HIGH){
    contador3=contador3-1;
    if(contador3>0){
      contador3=contador3;
      contador4=contador4;
    }
    if(contador3==0){
      contador4=contador4-1;
      if(contador4==0){
    contador1=contador1-1;
    }      
      contador3=10; 
    }    
    if(contador4==0){
      contador4=6;
    }

    if(contador1==0){
      contador1=10;
      contador2=contador2-1;
    }
  }
}
}

ricardo_lamas, não sei qual foi a parte da minha primeira resposta que não compreendeu.

luisilva:
(...)
1º) Edite o post, seleccione o código e clique no botão com o símbolo'#' que está na barra de ferramentas. Isso fará que o código fique numa caixa própria para o efeito que o torna mais legível.
2º) Tratamos do código. Há aí muito desperdício, muita coisa repetida e muita coisa que precisa de ser alterada.

Se apaga a maior parte do código, como é que quer que os outros o ajudem, se nem sequer conhecem o código?
Na sua alteração do post original, deixou tão pouco código, que não dá para perceber se aquilo é parte da função loop() ou se é outra coisa qualquer.