Lo hago por costumbre, cualquier valor que no sea una variable lo defino como constante, para que en ningun caso pueda ser alterado en tiempo de ejecucion.
Tecnicamente no puedo ser muy claro porque lo explicaria mal. Pero si no me equivoco tambien ocupa menos memoria al ser declarado como constante y no variable.
Lo veo bastante lógico y coherente, de ahora en adelante lo haré así también
Por cierto, yo ya no se que hago mal, he probado el código que me has puesto y nada de nada hace lo mismo que sin añadir el código tuyo. Ya no se que puñetas hago mal. Esto empieza a ser un poco desesperante =(
Edito:
Creo que había conectado Vcc del LCD donde no tocaba, voy a probar de nuevo a ver lo que pasa.
Re-Edito:
Si que funciona lo que pasa es que el LCD al quitarle la alimentacion se ralla y cuando vuelvo a apagar y encender los LEDS en el LCD faltan caracteres o salen cosas raras.
Estoy probando asi:
if (contador % 2 != 0){
tiempo = millis ();
LCDaut();
}
else if (millis()-tiempo > 30000){
lcd.noBacklight();
lcd.clear();
}
if (contadorManual % 2 != 0){
tiempo = millis ();
LCDman();
}
else if (millis()-tiempo > 30000){
lcd.noBacklight();
lcd.clear();
}
Pero estoy como al principio, enciende pero no apaga transcurridos los 30 seg

Re-re-edito:

BIIIIIIIIIIIIIIIIIIIIIIEEEEEEEEEEEEEEEEEEEENNNNNNNNNNNNNN!!!!!!!!!!!!!!!!!!!!!!!
Ya funciona!!!!!!!!

No veas menuda alegría, después de días y días intentándolo por fin a funcionado. Muchisimas gracias
juanpintom y a todos los que colgais tan maravillosa y valiosa informacion en este foro

la solucion era esta:
if ((contador % 2 != 0)&&(digitalRead(pulsador))){
tiempo = millis ();
LCDaut();
}
else if (millis()-tiempo > 30000){
lcd.noBacklight();
lcd.clear();
}
if ((contadorManual % 2 != 0)&&(digitalRead(pulsadorManual))){
tiempo = millis ();
LCDman();
}
else if (millis()-tiempo > 30000){
lcd.noBacklight();
lcd.clear();
}
Había una cosa por las que yo sabia que no funcionaba pero que no sabia como hacerlo. Una de ellas era que no conseguía hacer que el conteo del temporizador dependiera del momento en que yo pulsaba el pulsador, la solución era tan sencilla como poner if(... ... ... &&(digitalRead(pulsador))){ (!!!Esas puertas logicas!!!

)
Y la otra era que yo usaba el else, y usando el else if puedo poner una segunda condición en vez de ponerlo todo en la primera.
Ademas, no me preguntes el por que pero se a solucionado solo el problema de que el mega 2650 funcionara lento.

Aunque de todas formas voy a intentar que no este leyendo todo el rato el DHT11 y el RTC
Un saludo