Problemas con funcion millis () . Conflicto

El funcionamiento de una placa arduino es estar ejecutando siempre el la funcion loop() y a veces nos olvidamos de lo rapido que va el "pequeñin" (16Mhz....) .El problema puede estar en que en cada vez que se ejecuta el loop llamas a la funcion getMaxValue() que asigna a una variable el valor actual de millis() ,luego en el else pones la condicion de que millis() - previousMillis sea >= 5000 pero si el tiempo de ejecucion de cada loop es inferior a 5000 milisegundos,lo cual es bastante factible,la condicion sera siempre falsa.Mira de incluir en la entrada a funciones o en los bloques if else funciones Serial.println() indicando donde estas para luego saber que es lo que se ejecuta y lo que no,a modo de depuracion.Por ejemplo en la funcion getMaxValue() pon un Serial.println("Entrando en funcion getMaxValue") y asi en cada bloque ,y luego podras analizar mejor que es lo que esta fallando.