Si pero no cambia mucho, solo es mas fácil a los efectos de entender todo el código.
Pero entendiste tu error?
unsigned long condicion = millis();
if (condicion - palabra >= ConT){
ConT= condicion;
Serial.println("SE CUMPLE LOS 3 SEG.");
}
mira ahi.. condicion es tu millis()
palabra valia en tu caso 3000
pero luego el que cambiabas es ConT asi que al arrancar te encuentras con supongamos condicion = 200
200 - 3000 = ? eso da como diferencia de numeros sin signo un valor con overflow o sea
0x0000 00C8 = 200 decimal
[u] 0x0000 0<U+202D>BB8<U+202C> [/u] = 3000 decimal
0xFFFF F510<U+202C>
un número grande mayor a ConT que creo vale 0 ademas
Espero haberlo hecho bien.