ea7ln:
Cada día el ciclo se repite, pero con una pequeña diferencia horaria, aprox 1 min mas de sol cada día, si avanzamos hacia verano, y al contrario si vamos de verano a invierno.
Si lo quisieres es calcular la hora de los crepúsculos (mañana y tarde), la hora de salida, pico y puesta de sol y la luna, esos son cálculos matemáticos complejos que varian por la ubicación terrestre (ciudad donde estas) y la fecha actual. Dale una mirada a calendario-lunar.net.
Antes de lanzarte con esos cálculos complejos yo te recomendaría iniciar tu programación con valores fijos (que los podrías obtener de la pagina que te di). Mira el cuadro "Ingrese los datos manualmente"
Una idea que podrías aplicar posteriormente en tu proyecto es usa un sensor fotoeléctrico que te daria la verdadera iluminación real y evitarías todos esos cálculos complejos.
ea7ln:
El motivo de no usar la librería RTClib.h, es porque no conseguía sincronizar la hora del RTC con la de Windows. Ademas estuve buscando en internet, los comandos de esa libreria para saber cuales utilizar, y no conseguí encontrar información.
Justamente la librería que te recomiendo es de Adafruit por lo que esta extensamente documentada.
Inicia con:
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
Luego de creado el objeto RTC (con ultima linea) puedes usar los métodos:
rtc.begin()
rtc.isrunning()
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //Poner fecha y hora de compilación
rtc.adjust(DateTime(2018, 6, 1, 10, 42, 22)); //Año, mes, dia, hora, minuto, segundo
rtc.initialized()
rtc.lostPower()
rtc.now() //Instancias variable tipo DateTime
Luego de instanciada la varible, por ejemplo DateTime hoy.RTC.now(); puedes usar los métodos:
hoy = rtc.now();
hoy.year()
hoy.month()
hoy.day()
hoy.hour()
hoy.minute()
hoy.second()
hoy.unixtime()
Avanza un poco con eso y publicas tu código.