Si estas trabajando con millis deberias usar variables del tipo unsigned long en tu código, que en tu código estan definidas como int y hacen cosas raras cuando restas.
int tiempo1, tiempo2, duracion_actual0, duracion_total0, duracion_acumulada0, numpulsos0;