Delay por Millis, pero como función aparte

(deleted)

Ve a Documentación => Indice de temas tutoriales => millis()

(deleted)

(deleted)

Intenta explicarte con un código donde muestres que pretendes hacer o reemplazar.
Entiendo que quieres reemplazar delay pero el ejemplo mas simple lo tienes en el IDE. Si te pedi que leyeras la explicación de millis() es porque ahi mismo se menciona al ejemplo BlinkWithoutDelay.ino que esta en el IDE.
Ahora prueba Blink.ino que usa delay y luego prueba la versión miliis() ambos hacen lo mismo pero no trabajan igual.
Si en Blink pones por ejemplo un Serial.println(paso++); donde paso es una variable entera incializada a 0 con cada ciclo de loop veras que aumenta 1 pero lo hará al ritmo de los dos delays sumados.
En cambio, si haces lo mismo con BlinkWithoutDelay al abrir la pantalla del MonitorSerie verás como se llena del incremento de paso!!

Eso muestra como un código DETIENE y el otro permite que fluya sin frenos.

Considera este simple ejemplo:

unsigned long n;
void setup(){
   Serial.begin(9600);
   pinMode(13, OUTPUT);
}
void loop(){
   digitalWrite(13, HIGH);   //Prende LED
   delay(500);                    //Espera 0.5 seg
   digitalWrite(13, LOW);    //Apaga LED
   delay(500);                    //Espera 0.5 seg
   n++;
   Serial.println(n);
}

Nota: Veras que el valor de n se incrementa cada 1 segundo.

Este ejemplo funciona muy bien porque lo unico que tiene que hacer Arduino es prender y apagar el LED. Pero si ademas quisieras hacer algo mas no funcionaria porque los delay() paralizan todas las operaciones y no habria tiempo para hacer nada mas.

Ahora considera este ejemplo:

unsigned long n,t;
void setup(){
   Serial.begin(9600);
   pinMode(13, OUTPUT);
}
void loop(){
   if (millis() - t > 500){
      digitalWrite(13, !digitalRead(13));   //Conmuta LED
      t = millis();
   }
   n++;
   Serial.println(n);   
}

Nota: Veras que el valor de n se incrementa muy rápidamente en cada ciclo de loop().

Aquí te das cuenta que Arduino puede hacer otras tareas (aumentar n) porque le sobra tiempo hasta que debe conmutar el LED, porque el corre a una velocidad muy superior.