Modulo de reloj DS3231

Buenas noches, espero que alguien me pueda ayudar.
Estaba haciendo un proyecto para mi ultimo año de carrera pero es un reloj con alarma en el cual utilizo un modulo de reloj Ds3132, un modulo de rele de 2 canales y una pantalla LCD de 16x2, pero me tope con un problema el cual es que cuando desconecto e circuito de mi computadora el reloj se queda parado y al darle energía de nuevo no continua con la hora que debería de ser, si no que sigue en la hora que se quedo programado desde un inicio.
Me gustaría saber si me leuden ayudar o si tiene algunas posibles razones del error aquí abajo les dejare mi código.
<>#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,4,5,6,7);
RTC_DS3231 RTC;

int hora=0;
int minutos=0;
int segundos=0;
int salida=13;
void setup () {
lcd.begin(16,2);
//Inicializamos el puerto serie, wire y el modulo RTC
Serial.begin(9600);
Wire.begin();
RTC.begin();
//Si quitamos el comentario de la linea siguiente, se ajusta la hora y la fecha con la del ordenador
RTC.adjust(DateTime(DATE, TIME));
pinMode(salida,OUTPUT);
}

void loop () {

DateTime now = RTC.now();

hora=(now.hour(),DEC);
minutos=(now.minute(),DEC);
segundos=(now.second(),DEC);
//Imprimimos el dia
lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
lcd.print('/');
//Imprimimos el mes
lcd.print(now.month(), DEC);
lcd.print('/');
//Imprimimos el año
lcd.print(now.year(), DEC);
lcd.print(' ');
//Imprimimos la hora
lcd.setCursor(0,1);
lcd.print(now.hour(), DEC);
lcd.print(':');
//Imprimimos los minutos
lcd.print(now.minute(), DEC);
lcd.print(':');
//Imprimimos los segundos
lcd.print(now.second(), DEC);
lcd.setCursor(11,0);
lcd.print("ALARM");

if (now.hour()== 22 && now.minute() == 32 && now.second() == 15)
{
digitalWrite(salida,LOW);
lcd.setCursor(12,1);
lcd.print(" ON ");
delay(7000);
}
else if (now.hour()== 22 && now.minute() == 32 && now.second() == 15)
{
digitalWrite(salida,LOW);
lcd.setCursor(12,1);
lcd.print(" ON ");
delay(7000);
}

else
{
digitalWrite(salida,HIGH);
lcd.setCursor(11,1);
lcd.print("OFF");

}

}</>

En principio, edita tu post y presenta el código de acuerdo a las Normas del foro.

A mi tu código no me compila porque las constantes DATE y TIME que usas en esta línea

RTC.adjust(DateTime(DATE, TIME));

no están definidas.

Si a vos te compila, justamente esa línea es la que provoca la falla que cuentas porque setea el reloj con esos valores cada vez que reinicias.
De hecho te lo dice el comentario en la línea anterior a esa.

En el ejemplo DS3231 de la librería tienes la forma correcta de cargar la hora en que se compiló el sketch (que sería lo que en el comentario llama "hora del ordenador").

Pero debes correr una vez el código, luego comentas esa linea, y subes nuevamente el sketch, asi ya no vuelve a reajustar la hora (que es lo que no quieres que haga).

Por otro lado, esto

hora=(now.hour(),DEC);
minutos=(now.minute(),DEC);
segundos=(now.second(),DEC);

está mal.

Las opciones de formato se usan para imprimir, no se pueden usar para asignar variables y menos de tipo int.

Afortunadamente no usas para nada esas variables, simplemente comenta las líneas o directamente elimínalas.

Saludos

Muchísimas gracias enserio, Lo pondré en practica
Estoy iniciando he intentare lo que me has dicho para poder ver si si me funciona.
Después de realizar las correcciones que me dices debería de funcionarme verdad?
Saludos

Si, debería.

Saludos

Muchisimas Gracias enserio, la verdad no sabía que hacer para que funcionara.
Gracias!
saludos

Buenas tardes
Estoy haciendo un proyecto el cual es un reloj despertador en el cual utilizo un modulo de reloj DS3132, una pantalla LCD de 16x2, un modulo de rele de dos canales y un Arduino UNO.
El problema es que conecte un cargador de computadora y queme mi arduino asi que compre uno nuevos, incluyendo una pantalla nueva ya que no mostraba nada, Ahora que ya tengo los componentes nuevos y ya hice las conecciones correspondientes, la pantalla LCD no me muestra lo que es el reloj y no tengo ni idea de que podría ser, ya que ya revise las conecciones y estan todas en su lugar, en donde deberían de estar. No se si sea problema de mi codigo o de los Fisico que tengo.
Espero alguien pueda ayudarme por favor.
Este es mi codigo
#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,4,5,6,7);
RTC_DS3231 RTC;
int hora=0;
int minutos=0;
int segundos=0;
int salida=13;
void setup () {
lcd.begin(16,2);
//Inicializamos el puerto serie, wire y el modulo RTC
Serial.begin(9600);
Wire.begin();
RTC.begin();
//Si quitamos el comentario de la linea siguiente, se ajusta la hora y la fecha con la del ordenador
//RTC.adjust(DateTime(DATE, TIME));
pinMode(salida,OUTPUT);
}

void loop () {

DateTime now = RTC.now();
//Imprimimos el dia
lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
lcd.print('/');
//Imprimimos el mes
lcd.print(now.month(), DEC);
lcd.print('/');
//Imprimimos el año
lcd.print(now.year(), DEC);
lcd.print(' ');
//Imprimimos la hora
lcd.setCursor(0,1);
lcd.print(now.hour(), DEC);
lcd.print(':');
//Imprimimos los minutos
lcd.print(now.minute(), DEC);
lcd.print(':');
//Imprimimos los segundos
lcd.print(now.second(), DEC);
lcd.setCursor(11,0);
lcd.print("ALARM");

if (now.hour()== 22 && now.minute() == 32 && now.second() == 15)
{
digitalWrite(salida,LOW);
lcd.setCursor(12,1);
lcd.print(" ON ");
delay(7000);
}
else if (now.hour()== 22 && now.minute() == 32 && now.second() == 15)
{
digitalWrite(salida,LOW);
lcd.setCursor(12,1);
lcd.print(" ON ");
delay(7000);
}

else
{
digitalWrite(salida,HIGH);
lcd.setCursor(11,1);
lcd.print("OFF");

}
}

@quiquemelgarejo

Hola,
Desafortunadamente, no hablo español, así que esto es del traductor de Google.

He movido su otro tema aquí porque parece ser sobre el mismo tema, si ese no es el caso y realmente es diferente, por favor acepte mis disculpas.

Publicar dos veces sobre el mismo tema va en contra de las reglas del foro, ya que hace perder el tiempo a los voluntarios que intentan ayudarlo.

Gracias.

Moderador:
Basicamente como bien ha dicho @PerryBebbington esto es un doble posteo y para peor a pesar que acá tienes indicaciones de editar tu post, vuelves a postear lo mismo sin etiquetas.
Te envío un privado.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.