Ajuda com Millis()

Olá pessoal. Primeiramente bom domingo a todos!

Sou extremamente novato, comprei meu ARDUINO faz 2 semanas e estou desenvolvendo algumas coisas, como trabalho com oficina mecânica estou desenvolvendo um sensor de rotação...

Bom. Consegui fazer o sistema funcionar, tudo corretamente, só que após os 33s meu MILLIS fica na seguinte forma:

12:28:05.054 -> 0.00
12:28:05.054 -> 38478
12:28:05.054 -> 0.00
12:28:05.054 -> 38505
12:28:05.123 -> 0.00
12:28:05.123 -> 38533
12:28:05.123 -> 0.00
12:28:05.123 -> 38559
12:28:05.123 -> 0.00
12:28:05.192 -> 38587

Infezlimente toda vez que ele começa a fazer isso, o sistema trava e não consigo mais realizar a leitura dos pulsos quanto ele apresenta da forma abaixo, funciona normalmente:

12:27:50.322 -> 23738
12:27:50.322 -> 23752
12:27:50.322 -> 23767
12:27:50.390 -> 23781
12:27:50.390 -> 23796
12:27:50.390 -> 23811

tentei fazer uma pequena "gambiarra", na tentativa de sumir com este "ZERO" más não deu muito certo.

currentMillis = millis();
if(currentMillis < 1){
currentMillis = currentMillisVerifica;
}else{
currentMillisVerifica = currentMillis;
}

Estarei colocando o código abaixo. Se alguém puder me dar um auxílio no que pode estar acontecendo...

Lembrando que o problema se inicia aos 33s.
Obrigado"

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

int tempoInicio = 0;
int tempoFinal = 500;

int idBtn = 2;
float rotacaoWhile = 0;
float rotacao = 0;
bool verificadorDeRotacao = false;
bool verificadorDeRotacaoInterno = false;
bool verificadorDeDisplay = false;
unsigned long currentMillis = millis();
long currentMillisVerifica = 0;

void setup() {
Serial.begin(4800);
pinMode(idBtn, INPUT_PULLUP);

lcd.begin(16, 2);
lcd.println("Motor Pronto a ");
lcd.setCursor(0, 2);
lcd.println("funcionar ");
}

void loop() {

currentMillis = millis();
if(currentMillis < 1){
currentMillis = currentMillisVerifica;
}else{
currentMillisVerifica = currentMillis;
}
if (verificadorDeRotacao == false) {
if (digitalRead(idBtn) == 1) {
verificadorDeRotacao = true;
rotacaoWhile++;
}
} else {
if (digitalRead(idBtn) == 0) {
verificadorDeRotacao = false;
}
}

if ((currentMillis - tempoInicio) > tempoFinal) {
tempoInicio = currentMillis;
rotacao = rotacaoWhile;
rotacao = rotacao;
Serial.println(rotacaoWhile);
rotacaoWhile = 0;
}

lcd.setCursor(0, 2);
lcd.print("Rot.:");
lcd.print(rotacao * 60);
lcd.print(" RPM");
Serial.println(currentMillis);

}

Eu alteraria estas linhas:

int tempoInicio = 0;
int tempoFinal = 500;

int idBtn = 2;
float rotacaoWhile = 0;
float rotacao = 0;

para:

unsigned long tempoInicio = 0;
unsigned long tempoFinal = 500;

int idBtn = 2;
unsigned long rotacaoWhile = 0;
unsigned long rotacao = 0;

Olá meu amigo, muito obrigado pela sua ajuda, resolveu meu problema!

Que Deus o abençoe!

Só não sei colocar o tópico como RESOLVIDO.

Obrigado!