Arduino count down con lcd problema funzione

Ciao a tutti, ho un problema che non riesco a risolvere.

Sto realizzando un timer ma non riesco ad accedere ad una funzione.

Inizialmente devo impostare la funzione ATTESA che mi stampa sul Display:
premi START
set timer= 0

Entrato in modalità ATTESA, Quando premo un pulsante, dentro quella funzione, dovrei andare nella funzione stepDown dove viene
conteggiato un valore che parte a tot secondi per arrivare a 0

A valore=0 passo alla funzione TEMPOSCADUTO

Ho provato del codice che, al’ invio di un carattere “1”, passavo alla funzione steoDown, ma non succede niente o meglio, passa alla funzione ma solo per il breve tempo.
Come posso fare per esempio, alla pressione di un pulsante, passare alla funzione stepDown?
Ho provato ma senza risultati, potete aiutarmi?
Grazie infinite

#include <LiquidCrystal.h>

 
int hours = 0; // start hours
int minutes = 0; //start min
int seconds = 8; //start seconds
 
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
 lcd.begin(16, 2);
 lcd.print("Bromografo Timer");

 
 // lcd.scrollDisplayLeft();
 // wait a bit:
 delay(150);
 
 while (minutes > 0 || seconds >= 0) {
 lcd.setCursor(0, 2);
 lcd.print("C.Down=");
 
 lcd.setCursor(8, 2);
 (seconds < 10) ? lcd.print("0") : NULL;
 lcd.print(seconds);
 lcd.display();
 ATTESA();  // VAI A ATTESA
  
 lcd.setCursor(4, 2);
 delay(1000);
 }
}

//---------------------------------------------------------
 
void ATTESA() {
  lcd.clear(); // clears the screen and buffer
  lcd.setCursor(0, 0);
 lcd.print("Premi START");
 lcd.setCursor(0, 1);
 lcd.print("SetTimer=");
 lcd.setCursor(10, 1);
 lcd.print(seconds);

if(Serial.available() > 0){

    int tastiera = Serial.read();

    if(tastiera == '1'){
      stepDown();  // VAI A step down
    }

}
}

//---------------------------------------------------------

void stepDown() {
 if (seconds > 0) {
 seconds -= 1;
 } else {
 if (minutes > 0) {
 seconds = 59;
 minutes -= 1;
 } else {
 if (hours > 0) {
 seconds = 59;
 minutes = 59;
 hours -= 1;
 } else {
 TEMPOSCADUTO();
 }
 }
 }
}
 
 
void TEMPOSCADUTO() {
 lcd.clear(); // clears the screen and buffer
 lcd.setCursor(0, 0); // set timer position on lcd for end.
 lcd.println("Fine esposizione");
 
 lcd.setCursor(5, 1); // set timer position on lcd for end.
 lcd.println("APRIRE");
 delay(1000);
 lcd.display();
}

Ho risolto con questo sistema, funziona ma vorrei un vostro consiglio.

void ATTESA() {
  lcd.clear(); // clears the screen and buffer
  lcd.setCursor(0, 0);
 lcd.print("Premi START");
 lcd.setCursor(0, 1);
 lcd.print("SetTimer=");
 lcd.setCursor(10, 1);
 lcd.print(seconds);

if(Serial.available() > 0){

    int tastiera = Serial.read();

    if(tastiera == '1'){
      stepDown();  // VAI A step down
    
    }
flag=1;
}
if (flag==1) 
stepDown();

}