Realizar cálculos con RTC DS3231

Hola, verán, resulta que estoy con un proyecto para automatizar un acuario, y como tal, la manera más practica para realizarlo que se me ha ocurrido ha sido mediante un rtc crear un código para contabilizar los segundos y en base a eso, realizar las modificaciones oportunas… el problema reside en que cuando intento calcular los segundos del día, el valor no corresponde. Les dejo aquí mi código: (Voy a prescindir de lo que no es relevante con el problema, porque es un código inmenso)

#include <Time.h>
#include <TimeLib.h>
#include <math.h>
#include <Wire.h>
#include "RTClib.h"


long seg;

void setup() {
// RTC
  time_t fecha;
  rtc.begin();
}



void loop() {
DateTime now = rtc.now();

seg=now.hour()*3600+now.minute()*60+now.second();

serial.println(seg);
}

Cuando testeo el código, resulta que para las horas [0,8] sí cumple, pero de ahí en adelante, el programa hace que me salgan valores negativos hasta la hora 18, que vuelven a ser positivos… pero sin embargo, los valores no se corresponden.

muchas gracias de antemano

Prueba a añadir el sufijo L al número 3600 y multiplica así por 3600L:

seg=now.hour()*3600L+now.minute()*60+now.second();

La explicación la tienes en mi respuesta [SOLUCIONADO]Sevseg hh:mm:ss 6 display error desde 3:27:59 [aparece un guion] - #4 by IgnoranteAbsoluto - Español - Arduino Forum del foro.

Gran aporte, efectivamente era eso. No tenía ni idea. Mil millones de gracias!!!!