RTC DS3231

No hay manera de que me conserve la fecha y hora. Si quito la alimentación y la vuelvo a poner, me marca la hora de la última compilación. He cambiado la batería por si estuviese agotada y nada.... El producto es de AZ-Delivery. He comprado varios sensores de esta marca y no he tenido problemas con ninguno Estoy desesperado. Llevo una semana buscando por la WEB y no veo que se de una solución al tema. Gracias anticipadas a todos los que quieran aportar algo.

Y tu código como es?

Lo aconsejable es que pongas el codigo que estas usando, midas la tension de la pila que trae (ya que si está gastada y quitas la alimentacion se borra la memoria), y que tipo de RTC es concretamente y de que forma lo tienes conectado...

Así te aseguro que aqui muy muy probablemente te ayudaran (o ayudaremos) entre todos. Pero de esa manera que lo planteas dificil pones la cosa.

Saludos.

ropinal: Si quito la alimentación y la vuelvo a poner, me marca la hora de la última compilación.

Eso me hace pensar que es el Arduino quien, al arrancar, le está diciendo al RTC que se ponga en hora sí o sí. Sin comprobar previamente si ya lo estaba. Pero claro, eso no es más que especulaciones mías ya que como no hay ni una sola línea del código para ver lo que podría estar haciendo el Arduino... Eso sí, es "más divertido" cuanto menos información dan (aunque se la pidan).

Mira esta respuesta de @surbyte a alguien que sí puso su código ;) : http://forum.arduino.cc/index.php?topic=569957.msg3882515#msg3882515 Tal vez te sea útil.

La línea...

      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

... lo que hace es poner el RTC con la fecha y la hora en la que se compiló el programa. DATE y TIME son dos constantes que define el compilador en el momento de compilar el programa. Así que, si tienes sólo eso en el setup(), cada vez que inicia el Arduino se pondrá el RTC con la fecha y hora a la que se compiló el programa.

Es lo que creo que te está pasando, pero no descarto que sea otra cosa y que esté equivocado.

por eso mismo se le pide que ponga el codigo, para descartar si el problema es ese, pero veo que ademas de que hay dos post abiertos con exactamente el mismo tema (más otro creo en ingles, concretamente solo 3 post en ese nick) y en ninguno responde nada concreto al respecto de las preguntas que se le hacen, por tanto a esperar a que se moleste al menos en responder si quiere que le ayuden.

Si pero a esa respuestas el resto del código es fantástico porque solo cuando el RTC perdio energía por falla en su batería es que se autoajusta con los valores de compilación

 if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

Este conjunto lo acabo de descubrir en un post en inglés y realmente es muy bueno para esta librería RTClib porque si el RTC pierde energía (fallal en la batería) entonces se ajusta solo y no siempre. Eso evite el tener que comentarlo en el código que hacemos. Es creo un muy buen avance y simplificación en los códigos.