(SOLUCIONADO) duda millis();

si la funcion millis() mas o menos se desbordara en 50 dias (vuelve a cero) hay alguna forma de que esto no ocurra?

La función millis se desborda. Eso es inevitable; pero no debería ser impedimento para nada. ¿Por qué deseas evitar el desbordamiento?

que pasa si el proyecto debe de funcionar mas de 50 dias, al desbordarse los datos de tiempo se resetearian?

¿Qué datos de tiempo? ¿Podrías poner un ejemplo práctico? Como curiosidad te puedeo adelantar que si se trata de calcular millis transcurridos restando tal que así:

tiempoTranscurrido = millisFin - millisInicio;
if tiempoTranscurrido >= tiempoEspera .....

El cálculo resultante sería correcto incluso aunque hubiera ocurrido un desbordamiento entre la primera y segunda toma de millis. Es una peculiaridad que ocurre cuando trabajamos con datos unsigned. Puedes hacer esta prueba:

unsigned long a = 0xfffffff0; // Faltan 16 cuentas para el desbordamiento
unsigned long b = 5; // Han transcurrido 5 cuentas desde el desbordamiento
unsigned long c = b - a; // Debería resultar 21, que es el número total transcurrido, ¿no?

Por ello es el cálculo que suelo recomendar, en lugar de otros como sumar el tiempo buscado al tiempo inicial y luego comparar con millis actual, que sí pueden verse afectados por el desbordamiento. Si lo que quieres controlar es, por ejemplo, días transcurridos, puedes hacerlo de forma similar:

const unsigned long millisTieneUnDia = 1000*60*60*24;
unsigned long diasTranscurridos; // Este contador desbordará en 11 millones de años. ¿Suficiente?

tiempoTranscurrido = millisActual - millisAnterior; //Cálculo de millis transcurridos desde la última marca

if (tiempoTranscurrido >= millisTieneUnDia) { // si ha transcurrido un día desde la última marca
    diasTranscurridos ++; // aumentamos el contador de días
    millisAnterior += millisTieneUnDia; // establecemos la nueva marca de inicio
}

ok, gracias por la info, a probarlo

Solo mencionar que me parecio una estupenda explicacion, si usted es docente Noter, felicitaciones, claro y conciso.
Saludos.

Gracias, cuervo. Aunque no soy docente, de verdad que alegra saber que cuando echas un tiempo en intentar explicar algo que crees interesante, consigue llegar a alguien. Con ese mensaje que has puesto doy por bueno el tiempo invertido y me doy más que por satisfecho. Saludos.

La verdad es que sí, me uno al comentario.

Es muy de agradecer cuando se leen respuestas tan claras e instructivas con texto y código que hacen tan fácil seguir las explicaciones y entenderlo de principio a fin.

Muchas gracias noter

Gracias, Poemoto. Intentaremos "repetir el accidente" en ocasiones venideras ;) Ahora faltaría que si Adiran_E, que es quien abrió el hilo, lo da por entendido, lo marque como solucionado. Saludos.

Hola, siento abrir un tema ya solucionado, pero como puedo adaptarel codigo de noter a la parte de mi codigo:

long espera = 7000; // Intervalo de espera para el ir subiendo-bajando la intensidad (milisegundos)
long previousMillis = 0; // valor que almacena tiempo
unsigned long currentMillis; // Guardo el tiempo actual para ir comparando con previousMillis

currentMillis = millis();
if(currentMillis - previousMillis > espera) {
   previousMillis = currentMillis; 
}

Mejor abre un hilo o si has abierto ya uno, pon la pregunta en él, y explica mejor qué quieres hacer, porque el código que pones aquí es correcto para una temporización, pero no sé a qué quieres adaptarlo.