PAUSE and PLAY in Void Loop

Estou com dificuldade de dar pause e depois dar play no loop pressionando uma chave momentânea (botão).

Meu projeto é desenvolver um cronometro regressivo e assim que ele se zera emite um sinal e começa a contar o tempo progressivamente. O que esta faltando para o meu projeto estar completo é conseguir dar pause quando o tempo estiver correndo, tanto na parte regressiva do cronometro como na parte progressiva.

Alguém sabe como me ajudar?

(I'm having trouble giving pause and then to play the void loop by pressing a momentary switch ( button).

My project is to develop a countdown timer and so it resets beeps and starts counting the time gradually . What is lacking to complete my project is to be able to pause when the weather is running in both the reverse of the timer as in the progressive party.

Does anyone know how to help me ?)

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int segundo = 0;
int minuto = 0;
int hora = 0;
const int LED13 = 13;
const int Buzzer = A2;
const int Botao1 = A5;
const int Botao2 = A4;
const int Botao3 = A3;
const int Botao4 = A1;
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
int EstadoBotao4 = 0;
int EstadoBotao5 = 0;
void setup() {
  pinMode(Botao1, INPUT);
  pinMode(Botao2, INPUT);
  pinMode(Botao3, INPUT);
  pinMode(Botao4, INPUT);
  pinMode(LED13, OUTPUT);
  pinMode(Buzzer, OUTPUT);
  lcd.begin(16, 2);
  inicializacao();
}
void loop() {
  EstadoBotao1 = digitalRead(Botao1);
  if (EstadoBotao1 == HIGH) {
    delay(150);
    segundo++;
    if (segundo >= 60) {
      segundo = 00;
      lcd.setCursor(10, 0);
      lcd.print("00");
    }
    if (segundo < 10) {
      lcd.setCursor(11, 0);
      lcd.print(segundo);
    }
    if (segundo >= 10) {
      lcd.setCursor(10, 0);
      lcd.print(segundo);
    }
  }
  EstadoBotao2 = digitalRead(Botao2);
  if (EstadoBotao2 == HIGH) {
    delay(150);
    if (EstadoBotao2 == HIGH) {
      minuto++;
      if (minuto >= 60) {
        minuto = 0;
        lcd.setCursor(7, 0);
        lcd.print("00");
      }
      if (minuto < 10) {
        lcd.setCursor(8, 0);
        lcd.print(minuto);
      }
      if (minuto >= 10) {
        lcd.setCursor(7, 0);
        lcd.print(minuto);
      }
    }
  }
  EstadoBotao3 = digitalRead(Botao3);
  if (EstadoBotao3 == HIGH) {
    if ((minuto == 0) && (segundo == 0)) {
      //nao faz nada
    }
    else {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(" START ");
      if (segundo == 0) {
        minuto--;
        segundo = 59;
      }
      for (int y = 0; y < segundo; y--) {
        if (minuto < 10) {
          lcd.setCursor(5, 1);
          lcd.print("0");
          lcd.print(minuto);
          lcd.print(":");
        }
        else {
          lcd.setCursor(5, 1);
          lcd.print(minuto);
          lcd.print(":");
        }
        if (segundo < 10) {
          lcd.print("0");
          lcd.print(segundo);
        }
        else {
          lcd.print(segundo);
        }
        segundo--;
        if (segundo < 0) {
          minuto--;
          segundo = 59;
        }
        EstadoBotao2 = digitalRead(Botao2);
        if (EstadoBotao2 == HIGH) {
          minuto++;
          segundo = 0;
          lcd.setCursor(15, 0);
          lcd.print("+");
        }
        EstadoBotao1 = digitalRead(Botao1);
        if (EstadoBotao1 == HIGH) {
          segundo = 0;
          lcd.setCursor(15, 0);
          lcd.print("-");
        }
        delay(1000); //base de tempo de 1 segundo
        //para deixar timer mais rápido, diminuir aqui
        if ((segundo <= 0) && (minuto <= 0)) {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LARGOU!");
          digitalWrite(Buzzer, HIGH);
          delay(400);
          digitalWrite(Buzzer, LOW);
          delay(100);
          digitalWrite(Buzzer, HIGH);
          delay(400);
          digitalWrite(Buzzer, LOW);
          delay(100);
          digitalWrite(Buzzer, HIGH);
          delay(400);
          digitalWrite(Buzzer, LOW);
          delay(100);
          digitalWrite(Buzzer, HIGH);
          delay(1500);
          digitalWrite(Buzzer, LOW);
          segundo = 3;
          minuto = 0;
          do {
            lcd.setCursor(0, 0);
            lcd.print("Tempo de Regata:");
            if (hora < 10) {
              lcd.setCursor(3, 1);
              lcd.print("0");
              lcd.print(hora);
              lcd.print(":");
            }
            else {
              lcd.setCursor(3, 1);
              lcd.print(hora);
              lcd.print(":");
            }
            if (minuto < 10) {
              lcd.setCursor(6, 1);
              lcd.print("0");
              lcd.print(minuto);
              lcd.print(":");
            }
            else {
              lcd.setCursor(6, 1);
              lcd.print(minuto);
              lcd.print(":");
            }
            if (segundo < 10) {
              lcd.print("0");
              lcd.print(segundo);
            }
            else {
              lcd.print(segundo);
            }
            segundo++;
            if (segundo > 59) {
              minuto++;
              segundo = 0;
            }
            if (minuto > 59) {
              hora++;
              minuto = 0;
            }
            EstadoBotao4 = digitalRead(Botao3);
            if (EstadoBotao4 == HIGH) {
              segundo = 0;
              minuto = 0;
              hora = 0;
              break;
              inicializacao();
              lcd.setCursor(0, 1);
              lcd.print("                ");
            }
            delay(1000);
          } while (hora < 24);
          break;
        }
        EstadoBotao5 = digitalRead(Botao3);
        if (EstadoBotao5 == HIGH) {
          lcd.setCursor(0, 0);
          lcd.print(" PAUSE");
          delay(3000);
          lcd.setCursor(0, 0);
          lcd.print(" START");
        }
        lcd.setCursor(15, 0);
        lcd.print(" ");

      }
      inicializacao();
    }
  }
}
void inicializacao() { //criacao do procedimento
  lcd.begin(16, 2);
  lcd.print("Selecione o ");
  lcd.setCursor(0, 1);
  lcd.print("tempo do timer..");
  delay(1500);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Tempo: ");
  lcd.print("00:00");
}

I'm having trouble giving pause and then to play the void loop by pressing a momentary switch ( button)

The loop() function can not be stopped. It will be called over and over.

What you CAN do is not perform actions that you don't want performed.
Quite often, when people have problems making switches perform as intended, it is because the switch(es) is(are) not wired correctly. Not a word about how yours are wired...

That do/while loop IS going to bite you in the ass.