Migliorare Timer Progetto

praticamente dopo che inserisco la pass devo impostare il tempo...

il codice è scritto in modo che prima inserisco il tempo e dopo parte il countdown,non capisco il perchè ma il countdown me lo esegue subito(scrivendomi le scritte)

il problema e nelle ultime 5 righe, sicuramente sto sbagliando qualche valore

void codice2()
{
  lcd.print("Inserisci Tempo:");
  //updateDisplay();
  char key = keypad.getKey();
  //lcd.setCursor(0,1);
  //      lcd.print("H00:M00:S00");
  if (key != NO_KEY)
  {
    switch (conDig)
    {
      case 0:

        lcd.setCursor(conPos, 1);  // conPos = 0. Horas. First Digit.
        if (key <= '2')
        {
          lcd.print(key);
          conPos = 1;              // Moves the cursor at row 1 (the second one).
          conDig++;                // Moves on to the next case, with the cusor already in row 1.
          H = (key - 48) * 10;
        }
        break;
      case 1:
        lcd.setCursor(conPos, 1);   // conPos = 1. Horas. Second digit.
        lcd.print(key);
        lcd.print(":M ");
        conPos = 4;
        conDig++;
        H = H + (key - 48);
        break;
      case 2:
        lcd.setCursor(conPos, 1);   // conPos = 3. Minutos. Third digit.
        if (key <= '5')
        {
          lcd.print(key);
          conPos = 5;              // Moves the cursor at row 4 (the fifth one).
          conDig++;                // Moves on to the next case.
          M = (key - 48) * 10;
        }
        break;
      case 3:
        lcd.setCursor(conPos, 1);    // conPos = 4. Minutos. Forth digit.
        lcd.print(key);
        lcd.print(":S ");
        conPos = 8;
        conDig++;
        M = M + (key - 48);
        break;
      case 4:
        lcd.setCursor(conPos, 1);    // conPos = 6. Segundos. Fifth digit.
        if (key <= '5')
        {
          lcd.print(key);
          conPos = 10;
          conDig++;
          S = (key - 48) * 10;
        }
        break;
      case 5:
        lcd.setCursor(conPos, 1);    // conPos = 7. Segundos. Sixth digit.
        lcd.print(key);
        //  lcd.print(".");
        conDig++;
        S = S + (key - 48);
        break;
      case 6:

        timer();
    }
    while (conDig == 6)
    {
      // lcd.clear();
      // timer();
      confermapassword();
    }
  }

}