Migliorare Timer Progetto

buon giorno...in questi giorni ho apportato delle piccole modifiche come suggerito da -zef- e da fabpolli per tenere il codice un pò più pulito da leggere

invece per quanto riguarda il timer ancora sn in alto mare, non riesco a trovare nessun esempio da seguire, su internet si trovano solo video di gente che usa il potenziometro e lo shield per impostare il countdown

qualcuno riesce a spiegarmi cosa devo modificare per aggiungere le ORE e visualizzare quando devo inserire i valori H00:M00:S00

questi sn i due codici che m gestiscono il timer

codice per inserire i valori del tempo( per ora è impostato a 4 cifre)

void inseriretempo() {
  lcd.setCursor(0, 0);
  lcd.print("Inserire Tempo:");
  while (currentTimeValue < 4)

  {
    // lcd.print("H00:M00:S00");
    lcd.setCursor(currentTimeValue + 6, 1);
      lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*') && (key != '#') && (key != 'A') && (key != 'B') && (key != 'C') && (key != 'D')) //caratteri non permessi
      {

        lcd.print(key);
        tempo[currentTimeValue] = key;
        currentTimeValue++;
      }
    }
  }
  if (currentTimeValue == 4)
  {
    delay(2000);
    lcd.noCursor();
    lcd.clear();
    lcd.setCursor(1, 0);
    lcd.print("Start in 5 Sec");
    lcd.setCursor(6, 1);
    for (int i = 0; i <= 4; i++) // ripete x 5 volte quello scritto tra {}
    {
      lcd.print((char)0); // richiama la clessidra
      delay(1000);
    }
    lcd.clear();
    currentTimeValue = 0;
  }
}

e questo è il void che mi converte i valori in minuti e secondi se non mi sbaglio

void settaggiotempo() {

  int l;
  char tempVal[3];
  char key = keypad.getKey();
  if (currentState == 1) {
    tempVal[0] = tempo[0];
    tempVal[1] = tempo[1];
    tempVal[2] = 0;
    
    timerSeconds = atol(tempVal) * 60;

    tempVal[0] = tempo[2];
    tempVal[1] = tempo[3];
    tempVal[2] = 0;

    timerSeconds = timerSeconds + atol(tempVal);
    currentState = 2;
  }

  if (lpcnt > 9) {
    lpcnt = 0;
    --timerSeconds;
    tone(buzzer, 1500, 500);
    countdown();

    if (timerSeconds <= 0) {
      currentState = 1;
      temposcaduto();
    }
  }
  ++lpcnt;
  delay(100);
}