Dúvida sobre timer

Bom dia a todos,

Estou com dúvidas sobre o uso de timer, pesquisei sobre as funções millis e delay mas sou iniciante e estou confuso quanto ao uso das mesmas.

Minha intenção é uma espécie de sistema de irrigação, o que quero é se todas as condições antes do timer forem aceitas o Arduino deve abrir uma solenoide por 3 minutos, por exemplo, mas não quero que o programa pare no loop (delay) enquanto isso, pois tenho outras funções que quero deixar rodando, por exemplo um Led piscando, um display atualizando informações a cada 1 minuto e etc.
Pelo que entendi da função millis ela começa a contar desde que o programa inicia e não entendi bem como poderia usa-la como um timer para contar o tempo desejado.

Poderiam me dar algumas dicas de como fazer um timer sem parar o programa nele?

Viva,

O millis() é bom, mas para medir minutos não vai ter muita precisão. Se a solenóide vai ligar a determinada hora por 3 minutos, o melhor é teres um RTC ligado ao Arduino para ser mais preciso.

No entanto, se só precisas de medir um ou 3 minutos, podes fazer algo deste género:

#define PISCA   60000
#define DISPLAY 60000

unsigned long tPisca=0; 
unsigned long tDisplay = 0;
unsigned char statPisca = 0; 

void loop() {

if (millis() - tPisca > PISCA) {
   if (statPisca == 0 ) statPisca = 1; 
   digitalWrite(pinoPisca, statPisca); 
   tPisca = millis(); 
}
if (millis() - tDisplay > DISPLAY) {
   lcd.Println("Ola, Mundo!!"); 
   tPisca = millis(); 
}