Em que sentido é que interferiria?
Este pedaço de código:
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();
}
Fica aqui bloqueado durante 4 segundos... é apenas marginalmente melhor do que um delay(). Além do mais, se a pessoa carregar no botão dentro do primeiro segundo o teu programa não vai apanhar isso.
Porque é que tens de executar estas instruções todas durante 4 segundos repetidamente???
As tuas temporizações e o que tu pensas ser necessário é o que está a confundir o projecto todo.