Hacer Pausas sin usar DELAY

Buen día, Como sabrán soy bastante inexperto en programación, pero he leído mucho de los problemas que trae hacer pausas en los programas usando la función DELAY, es por este que se me ocurrió hacer una función para hacer pausas, a mi me ha dado resultado, es por esto que la comparto para que la critiquen o la usen, siempre escucho ideas ya que ayudan a mejorar.

Saludos

[

//Variables para hacer pausa sin delay

int espera=0;
unsigned long esperap = 0;
int salidabucle=0;



void pausap (int pausa){            //pausap(tiempo de pausa en milisegundos);
 espera=0;
 salidabucle=0;
  while (salidabucle==0)
  {
  if (espera==0)
  {esperap=millis();
  espera=1;
  }
  if (millis()-esperap>=pausa)
  {salidabucle=1;
  }
else
  { 
    salidabucle=0;
  }
} 
}]

Cual es la diferencia entre usar eso y usar delay()?

No veo que el resto del código continue ejecutándose porque si tu le pones lo que sea a pausap, ésta permanecerá en el while.
Esta claro que puedes agregar cosas dentro del else pero no es la idea o si?

Si es cierto, porque mientras se ejecute el loop de pausap no estoy haciendo nada.....

Pero supongamos ahora que necesito hacer una pausa en el programa y necesito seguir tomando datos de temperatura por ejemplo. Como hago una pausa que no frene a todos los otros procesos???

Lo que debes pausar es una tarea o varias, no las demas.
Acá lo que has hecho asi como esta planteado actúa como delay.

supongamos que quisieras medir temperatura con un sensor analógico.

#define PAUSE   5000UL   // UL porque es unsigned long
unsigned long start;

void setup {

}

void loop() {

  int valor = analogRead(A0);  // leo valor análogico en variable entera valor
  if (millis() - start) {
      start = PAUSE + millis();  // cargo variable start con millis() mas 1000 milisegundos
      // hago lo que debo cada 1000 mseg
  }
  // sigo con las tareas sin demoras.

}

Esto hace lo que tu pides.

Ok planteado de esta manera no detengo el resto de los procesos. Muchas gracias

Esa es la idea. Tu código estaba bien pero ves ahora que solo repites una forma estilo delay(pausa)
Sin queres programaste lo mismo.