Al margen de lo que te remarca @PeterKantTropus , yo no había caído en cuenta de los delay() que creo son innecesarios pero no me detuve mucho en analizarlo, además mezclar millis() con delay() no es la mejor idea.
Como decía, al margen de eso
if(tiempo2 > (tiempo1+10000)){
no está bien. Lo correcto es
if(tiempo2 - tiempo1 > 10000UL){
de otro modo puede generar problemas.
(UL indica que el literal es unsigned long al igual que tiempo1 y tiempo2)
Saludos