DUPLICADO - PARA ELIMINAR

Muy buenos días,

Empezar de cero con Arduino es "fácil", gracias a la cantidad de libre información que hay online.
Empezar de cero con Arduino sin tener ni pajolera idea de programar es una auténtica aventura, nunca había celebrado tanto que se encendiera un simple led o saber la temperatura ambiente de mi habitación.

Bueno, aquí viene mi duda, he copiado y actualizado para mis necesidades el siguiente código de anochecer y amanecer.

Gracias a la ayuda de blogs como GitHub - PabloGF/Aquarium de donde saqué el original.

Mi duda es: yo ahora enciendo Arduino y dejo que haga su función sin problema, lo único es que al cabo de los días se retrasa y se descuadra de horario.

He comprado un RTC_DS1307 y tengo la librería y los códigos básicos para su funcionamiento y para dar hora a Arduino, pero como hago para transformar mi código poniendo horario y como le digo que tire del reloj?

Código: Strip RGB

// Test Amanece Anochece 24h

int ledA = 10;
int ledB = 9; 
int ledC = 8;

void setup() {                
// initialize the digital pin as an output.
pinMode(ledA, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledC, OUTPUT);
}

void loop() {

 // Anochecer (dura 55min)

analogWrite(ledA,255);
delay(300000);
analogWrite(ledA,255);   
delay(300000);
analogWrite(ledA,255);  
analogWrite(ledB,255);  
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,127);  
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,64);
analogWrite(ledC,191);  
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,33);
analogWrite(ledC,127);  
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,12);
analogWrite(ledC,64);
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,4);
analogWrite(ledC,33);
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,0);
analogWrite(ledC,12);
delay(300000);
analogWrite(ledA,255);
analogWrite(ledC,4);
delay(300000);
analogWrite(ledA,255);
analogWrite(ledC,0);
delay(300000);
analogWrite(ledA,64);
delay(3900000);  // 1h5min moon light
analogWrite(ledA,0);
delay(33000000);  //tiempo de oscuridad 12h

// Amanecer (dura 50min) 10:10

analogWrite(ledA,12);   
delay(300000);
analogWrite(ledA,12);   
delay(300000);
analogWrite(ledA,33);  
analogWrite(ledB,4);  
delay(300000);
analogWrite(ledA,64);
analogWrite(ledB,12);  
delay(300000);
analogWrite(ledA,127);
analogWrite(ledB,33);
analogWrite(ledC,4);  
delay(300000);
analogWrite(ledA,191);
analogWrite(ledB,64);
analogWrite(ledC,12);  
delay(300000);
analogWrite(ledA,255);
analogWrite(ledB,127);
analogWrite(ledC,33);
delay(300000);
analogWrite(ledB,191);
analogWrite(ledC,64);
delay(300000);
analogWrite(ledB,255);
analogWrite(ledC,127);
delay(300000);
analogWrite(ledC,191);
delay(300000);
analogWrite(ledC,255);
  delay(43200000); //Tiempo de luz con todos los LEDs al 100%
                // (milisegundos) (12h) (de 11:00 a 23:00)
                 
}

Muchas gracias a todas/os, sin gente como vosotros sería difícil que paquetes como yo aprendiéramos algo, gracias.

Yo no dependería de reloj sino de una o más resistencias dependientes de la luz, entre determinados (por ti) valores de resistencia enciende y entre otros apaga.

Creo que es lo más simple y efectivo!

No es necesario explicar aquí lo ya explicado por el colega fjramirez en un tutorial que tiene en el apartado de Documentación y más cosas relacionadas en su página.

Desde luego, lo primero es quitar esos horribles Delay casi infinitos y hacer los cambios según las horas y minutos correspondientes.