Não consigo mostrar data e hora no display LCD 2,4 TFT com RTC DS3231! AJUDA

Então o touch não interfere na contagem do tempo do arduíno?

Então o que é que tenho mal na parte da programação? É que não mostra as linhas de código durante 4 segundos no ecrã, o que faz é mostra as linhas de código e passa logo para a outra parte do código, não dando para ver o que está escrito. é de referir que a inicializei a variavel valor_millis, da seguinte forma: unsigned long valor_millis = 0;

void loop()
{
  if (estado_menu == 0) 
  {
    tft.fillScreen(PRETO);
    pag_inicial();
    tft.setFont();
    TSPoint p = waitTouch();
    if ((p.x > 20) && (p.x <= 300) && (p.y > 80) && (p.y <= 160))
    {
      estado_menu = 1;
      Stepper_porta.step(300);
    }
  }
  if (estado_menu == 1) 
  {
    while((millis() - valor_millis) >= 4000)
    {
      tft.fillScreen(PRETO);
      tft.setFont(&FreeSansBold9pt7b);
      tft.setCursor(50, 120);
      tft.setTextColor(VERMELHO);
      tft.setTextSize(2);
      tft.print("Para que piso\n\n");
      tft.setCursor(40, 160);
      tft.setTextColor(VERMELHO);
      tft.setTextSize(2);
      tft.print("Que deseja ir?");
      valor_millis = millis();
    } 
    tft.fillScreen(PRETO);
    botoes_pisos();
    TSPoint p = waitTouch();
    if ((p.x > 20) && (p.x <= 290) && (p.y > 40) && (p.y <= 110))//se clicar no botao1
    {
      if (piso_elevador == ler_microswitch0)
      {
        while((millis() - valor_millis) <= 4000)
        {  
          tft.fillScreen(PRETO);
          tft.setFont(&FreeSansBold9pt7b);
          tft.setCursor(55, 120);
          tft.setTextColor(VERMELHO);
          tft.setTextSize(2);
          tft.print("Encontra-se\n\n");
          tft.setCursor(67, 160);
          tft.setTextColor(VERMELHO);
          tft.setTextSize(2);
          tft.print("Nesse piso!");
          tft.setFont();
          valor_millis = millis();
        }
      }