Chocadeira

Olá, estou precisando de ajudar com meu projeto, é uma chocadeira inteligente. No momento meu código está há sim:
#include <LiquidCrystal_I2C.h> //Biblioteca LCD i2C
#include <Wire.h> // Biblioteca i2c
#include “RTClib.h” //Biblioteca RTC
#include <dht.h> //Biblioteca DHT11
//================ Declaração e array ========================
RTC_DS1307 rtc; // Declarando variavel RTC
char daysOfTheWeek [7] [12] = {“Domingo”, “Segunda”, “Terça”, “Quarta”, “Quinta”, “Sexta”, “Sábado”}; // Array para dias da semana

//============================================

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Endereço do I2C e demais informações

//=========== Array do simbolo grau ==========================
byte grau[8] ={ B00001100,
B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};

// Declarando variável de DHT 11
dht DHT;

// Definindo pino de ligação DHT
#define DHT11_PIN A1

// Declarando variáveis
int temperatura = 0,
umidade = 0;

// Declanrando Rele1 e Rele2

int Lamp = 8;
int Coller1 = 9;
int Coller2 = 10;
int Motor = 11;

// Declarando variaves para botão
const int buttonPin = 2;
// Variaveis que devem mudar:
int buttonState = 0; // variavel para ler o estado do botao

void setup(){

pinMode(Lamp,OUTPUT); // Inicializa o pino de Saída
pinMode(Coller,OUTPUT); //Inicializa o pino de Saída
pinMode(DHT11_PIN,INPUT); //Inicializa o pino de entrada
pinMode(buttonPin, INPUT);// Inicializa o pino do botao como entrada
Serial.begin (9600); //Incializando Arduino
lcd.begin(16,2); // indica a quantidade de colunas e numero de linhas

if (! rtc.begin()) { //Se o RTC nao for inicializado, faz
Serial.println(“DS1307 NAO INICIALIZADO”); //Imprime o texto
while (1); //Trava o programa
}
//rtc.adjust(DateTime(2019, 12, 19, 21, 00, 00));//Ajusta o tempo do RTC para a data e hora definida pelo usuario.
delay(100); //Tempo de espera
}
void loop(){
//=========================== LCD COM RTC =======================
DateTime now = rtc.now(); // Função do RTC

lcd.setCursor (0,0);// Inicia na primeira coluna e linha
lcd.print (“Data:”); //Escreve “Data:”
lcd.setCursor (5,0); // Inicia na quinta coluna e primera linha
lcd.print (now.day()); //Escreve o valor do Dia
lcd.setCursor(7,0); // Inicia na setima coluna e primeira linha
lcd.print ("/"); // Escreve “/”
lcd.setCursor(8,0); // Inicia na oitava coluna e primeira linha
lcd.print (now.month()); // Escreve o valor do mês
lcd.setCursor(10,0); //Inicia na dezima coluna e primeira linha
lcd.print("/"); // Escreve “/”
lcd.setCursor (11,0); //Inicia na dezima primeira coluna e primera linha
lcd.print (now.year(),DEC); //Escreve o valor do Ano
lcd.setCursor (0,1);//Inicia na primeira coluna e segunda linha
lcd.print (“Hora: “);// Escreve “horas:”
lcd.setCursor (5,1); // Inicia na quinta coluna e segunda linha
lcd.print (now.hour());// Escreve o valor da hora
lcd.setCursor (7,1);//Inicia na setima coluna e segunda linha
lcd.print (”:”); //Escreve “:”
lcd.setCursor (8,1);// Inicia na oitava coluna e segunda linha
lcd.print (now.minute());// Escreve o valor do Minuto
lcd.setCursor (10,1); // Inicia na dezima coluna e segunda linha
lcd.print (":");// Escreve “:”
lcd.setCursor (11,1); //Inicia na dezima primeira coluna e segunda linha
lcd.print (now.second());// Escreve o valor do segundo
delay(1000);// Tempo de espera
lcd.clear();// limpa a tela

//=========================== LCD COM DHT 11 ===========
lcd.setCursor (0,0);// Inicia na primeira coluna e linha
lcd.print (“Umid: “);//Escreve “Umid:”
lcd.setCursor (5,0);// Inicia na quinta coluna e primera linha
lcd.print (umidade);//Escreve o valor da Umidade
lcd.setCursor(7,0);// Inicia na setima coluna e primeira linha
lcd.print(”%”);// Escreve “%”
lcd.setCursor (0,1);//Inicia na primeira coluna e segunda linha
lcd.println ("Temp: ");// Escreve “Temp:”
lcd.setCursor (5,1); //Inicia na quinta coluna e segunda linha
lcd.print (temperatura);//Escreve o valor da Temperatura
lcd.setCursor(7,1);//Inicia na setima coluna e segunda linha
lcd.print((char (223)));// Escreve a simbologia do Grau
delay(2000);// Tempo de espera

// ============ Declaração de Variáveis de temperatura e Umidade ==============

DHT.read11(DHT11_PIN);// Declarando DHT como por analogica

temperatura = DHT.temperature; // Granvando valor de temperature na variável “temperatura”
umidade = DHT.humidity; // Granvando valor de humidity na variável “umidade”

// ======================== RELÉ COM DHT11 ============================
// IF para temperatura
if (temperatura <= 30){ // Se a temperatura for menor ou igual a 30, então
digitalWrite(Lamp, LOW);//Liga a lampada
}
if (temperatura >= 32){ // Se a temperatura for maior ou igual a 35, então
digitalWrite(Lamp, HIGH); //Desliga a lamapada
}
// IF para umidade
if (umidade <= 50){ // Se a umidade for menor ou igual a 50, então
digitalWrite(Coller1, LOW); //Liga a coller
}
if (umidade >= 60){// Se a umidade for maior ou igual a 60, então
digitalWrite(Coller2, HIGH);//Desliga a colle
}
// ====================== Tempo de rotação =======================

}

Preciso agora cronometra um tempo para a rotações dos ovos e quantidade de dias:

1º Passo - Definir quantidade de dias para a chocagem dos ovos

2º Passo - Fazer a rotação do motor de passos a cada 10h

3º Passo - Desligar a rotação quando falta 3 dias antes do nascimento das aves

Eu não sei muito bem, como usar o RTC para fazer isso. Preciso dela, por ter uma bateria e grava a hora, há sim evitando do algoritmo reset quando ouver um distúrbio na alimentação !!!