RTC ds3231, LCD I2c, Arduino Nano

Encontre este codigo en youtube, lo modifique un poco solo para leerlo en mi idioma, casi todo esta correcto, solo por un cosa, **no guarda la fecha ni la hora, estuve buscando informacion y creo q esta linea es para fijar la fecha pero cuando la subo me pide algo mas : **
// ssmmhhWDDMMYYYY set time

#include <Wire.h>
#include <ds3231.h>
#include <LiquidCrystal_I2C.h>
#define BUFF_MAX 128

//****************************************Define I2C LCD Display *********************************
#define I2C_ADDR 0x27 // Define I2C Address for the PCF8574T
//—(Following are the PCF8574 pin assignments to LCD connections )----
// This are different than earlier/different I2C LCD displays

#define Rs_pin 0
#define Rw_pin 1
#define En_pin 2
#define BACKLIGHT_PIN 3
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

#define LED_OFF 0
#define LED_ON 1

/-----( Declare objects )-----/
LiquidCrystal_I2C lcd(0x3F,16,2);
//************************************ END LCD DISPLAY *******************************************

uint8_t time[8];
char recv[BUFF_MAX];
unsigned int recv_size = 0;
unsigned long prev, interval = 1000;

void setup()
{
Serial.begin(9600);
Wire.begin();
DS3231_init(DS3231_INTCN);
memset(recv, 0, BUFF_MAX);
Serial.println(“GET time”);

//LCD Setup******
lcd.begin (16,2); // initialize the lcd
// Switch on the backlight

lcd.setBacklight(LED_ON);
//END LCD Setup*****

Serial.println(“Setting time”);
setTheTime(“304012112102019”); // ssmmhhWDDMMYYYY set time once in the given format

}

void loop()
{
char tempF[6];
float temperature;
char buff[BUFF_MAX];
unsigned long now = millis();
struct ts t;
// show time once in a while
if (now - prev > interval){
DS3231_get(&t); //Get time
temperature = DS3231_get_treg(); //Get temperature
dtostrf(temperature, 5, 1, tempF);

lcd.clear();
lcd.setCursor(0,0);

lcd.print(t.mday);

printMonth(t.mon);

lcd.print(t.year);

lcd.setCursor(0,1); //Go to second line of the LCD Screen
lcd.print(t.hour);
lcd.print(":");
if(t.min<10)
{
lcd.print(“0”);
}
lcd.print(t.min);
lcd.print(":");
if(t.sec<10)
{
lcd.print(“0”);
}
lcd.print(t.sec);

lcd.print(’ ');
lcd.print(tempF);
lcd.print((char)223);
lcd.print("C ");
prev = now;
}

}

void setTheTime(char *cmd)
{
struct ts t;

// ssmmhhWDDMMYYYY set time

t.sec = inp2toi(cmd, 0);
t.min = inp2toi(cmd, 2);
t.hour = inp2toi(cmd, 4);
t.wday = inp2toi(cmd, 6);
t.mday = inp2toi(cmd, 7);
t.mon = inp2toi(cmd, 9);
t.year = inp2toi(cmd, 11) * 100 + inp2toi(cmd, 13);
DS3231_set(t);
Serial.println(“OK”);
}

void printMonth(int month)
{
switch(month)
{
case 1: lcd.print(" Enero “);break;
case 2: lcd.print(” febrero “);break;
case 3: lcd.print(” Marzo “);break;
case 4: lcd.print(” Abril “);break;
case 5: lcd.print(” Mayo “);break;
case 6: lcd.print(” Junio “);break;
case 7: lcd.print(” Julio “);break;
case 8: lcd.print(” Agosto “);break;
case 9: lcd.print(” Septiembre “);break;
case 10: lcd.print(” Octubre “);break;
case 11: lcd.print(” Noviembre “);break;
case 12: lcd.print(” Diciembre “);break;
default: lcd.print(” Error ");break;
}
}

Por favor lee las normas del foro y ten presente como se postean los códigos y que en tu título no debes usar palabras inútiles como(AYUDA). El foro brinda Ayuda asi que para que poner ese título? Cuando alguien te responde ya te ayuda, o no es asi? Edita ahora tu código. Hilo movido a Software

smarauders:
Encontre este codigo en youtube, lo modifique un poco solo para leerlo en mi idioma, casi todo esta correcto, solo por un cosa, no guarda la fecha ni la hora, estuve buscando informacion y creo q esta linea es para fijar la fecha pero cuando la subo me pide algo mas : // ssmmhhWDDMMYYYY set time

No conozco esa vieja librería que no se actualiza hace 6 años, pero creo que te estas olvidando de instanciar el objeto.

#include <Wire.h>
#include <DS3231.h>

DS3231 reloj;

void setup(){
   Serial.begin(9600);
   reloj.begin();
   reloj.setDateTime(__DATE__, __TIME__);  //Solo ejecuta esto una vez.
}

void loop(){
   RTCDateTime dt = reloj.getDateTime();
   Serial.print(dt.hour);   
   Serial.print(":");
   Serial.print(dt.minute); 
   Serial.print(":");
   Serial.println(dt.second);
  delay(1000);
}