Si me permites no puedes tener una rutina que chequea segundos y luego estamparle un
delay(1000);
Comprometes todo.
No importa si lo probaste 5 millones de veces.
Segundos con delay(1000) no esa bien.
Lo pones al limite al código para detectar algo.