(preciso de ajud) TEMPORIZADOR ARDUINO

eu criei um contador de tempo no arduino mas tenho problema ao executar, usei um monitor lcd 16x2 para contabilizar o tempo,
mas ao usar com outra programação mais complexa ele não conta o tempo pois o meu temporizador necessitar “ficar loopando” para contar tempo, e essa minha outra programação tem inicio e fim (exit 0) assim não conseguindo contabilizar o tempo, é possível eu fazer esse timer funcionar junto com a programação que tenho.

*segue tmb esquema de ligação feito no tinkercad para caso alguém queira ajudar e testar, e tmb segue link para pagina do tinkercad com esse esquema para mais testes

*grande resumo, preciso fazer ambos codigos funcionarem juntos, é possivel ???

  • essa programação que tenho nada mais que é que ativação de relé, alguns delays

  • timer =

#include <LiquidCrystal.h>
LiquidCrystal lcd( 12, 11, 5, 4, 3, 2);

int seg =0,
seg2 =0,
min= 0;
unsigned long tempo;
unsigned long ult_tempo = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{

 tempo = millis();
if((tempo - ult_tempo) >= 1000)
{
  ult_tempo = tempo;
  seg++;
  if(seg >= 60)
  {
    seg =0;
    min++;
  }
  lcd.begin(16, 2);
  lcd.setCursor(11,1);
  lcd.print(min);
  lcd.print(":");
  lcd.print(seg);

// se eu não usar delay ele fica piscando toda hora e se eu não usar o clear ele escreve do lado e não sobrepõem

  delay(1000);
  lcd.clear();      
  }
}

grande resumo, preciso fazer ambos codigos funcionarem juntos, é possivel ???

o problema é realmente vc usar a função delay. ela vai travar o contador. O ideal é vc usar uma variavel que vai marcar o valor do millis, e fazer uma comparação que quando o essa variavel for maior que esse valor marcado, o se codigo continue. isso vai fazer o loop continuar rodando e entrando na comparação (if (tempo - ult_tempo)