Error al agregar RTC. Me dejo de andar otra cosa

Buenas noches a todos , bueno yo en algun post pregunte sobre el timestamp (unixtime) y me ayudaron , me dijieron que ponga la libreria y eso..

Bueno yo obtenia la hora de otra forma y realize mi circuito de riego en base a eso

Ahora que me cambio la forma de obtener la hora y agrege la libreria , el circuito dejo de funcionar.

Este es el circuito completo.

#include "Wire.h"
#include "RTClib.h"

RTC_DS1307 RTC;

int bomba= 2;
int canilla1= 3;
int canilla2= 4;
int canilla3= 5;

int humedad1 = 0;
int sector1 = 0;
int sector2 = 0;
int sector3 = 0;
int bomba1 = 0;
int humedadno = 0;

int second;
int minute;
int hour;
int monthDay;
int month;
int year;
int unix;

void setup()
{
Serial.begin(9600) ;
Wire.begin();
pinMode(bomba, OUTPUT);
pinMode(canilla1, OUTPUT);
pinMode(canilla2, OUTPUT);
pinMode(canilla3, OUTPUT);
// pinMode(ledriego, OUTPUT);
// pinMode(ledbomba, OUTPUT);
// pinMode(boton, INPUT);
// pinMode(botonriego, INPUT);
// pinMode(botonbomba, INPUT);
}

void loop()
{
DateTime now = RTC.now();
second = now.second();
minute = now.minute();
hour = now.hour();
monthDay = now.day();
month = now.month();
year = now.year();
unix = now.unixtime();
humedad1 = analogRead(0);
Medir_Humedad();
comenzar_riego();
leer_datos();

}

void Medir_Humedad()
{
humedad1 = analogRead(0);
if(humedad1 >= 500) {
humedadno = 1;
}
else {
humedadno = 0;

}
}

bool canilla1_on = false;
int canilla1_prendida_hora[3] = {-1,-1,-1};
bool canilla2_on = false;
int canilla2_prendida_hora[3] = {-1,-1,-1};
bool canilla3_on = false;
int canilla3_prendida_hora[3] = {-1,-1,-1};

void comenzar_riego(){
if (hour == 22 && minute >= 43 && minute <= 48){
if (!canilla1_on){
digitalWrite(canilla1, HIGH);
digitalWrite(canilla2, HIGH);
canilla1_on = true;
canilla1_prendida_hora[0] = hour;
canilla1_prendida_hora[1] = minute;
canilla1_prendida_hora[2] = second;
}
if (canilla1_on && canilla1_prendida_hora[0] == hour && canilla1_prendida_hora[1] == minute && canilla1_prendida_hora[2]+3 >= second){
digitalWrite(bomba, HIGH);
}
} else {
canilla1_on = false;
canilla1_prendida_hora[0] = -1;
canilla1_prendida_hora[1] = -1;
canilla1_prendida_hora[2] = -1;
digitalWrite(bomba, LOW);
digitalWrite(canilla1, LOW);
digitalWrite(canilla2, LOW);
}
if (hour == 22 && minute >= 48 && minute <= 50){
if (!canilla2_on){
digitalWrite(canilla2, HIGH);
digitalWrite(canilla3, HIGH);
canilla2_on = true;
canilla2_prendida_hora[0] = hour;
canilla2_prendida_hora[1] = minute;
canilla2_prendida_hora[2] = second;
}
if (canilla2_on && canilla2_prendida_hora[0] == hour && canilla2_prendida_hora[1] == minute && canilla2_prendida_hora[2]+3 >= second){
digitalWrite(bomba, HIGH);

}
} else {
canilla2_on = false;
canilla2_prendida_hora[0] = -1;
canilla2_prendida_hora[1] = -1;
canilla2_prendida_hora[2] = -1;
digitalWrite(bomba, LOW);
digitalWrite(canilla2, LOW);
digitalWrite(canilla3, LOW);
}
if (hour == 22 && minute >= 52 && minute <= 56){
if (!canilla3_on){
digitalWrite(canilla3, HIGH);
digitalWrite(canilla1, HIGH);
canilla3_on = true;
canilla3_prendida_hora[0] = hour;
canilla3_prendida_hora[1] = minute;
canilla3_prendida_hora[2] = second;
}
if (canilla3_on && canilla3_prendida_hora[0] == hour && canilla3_prendida_hora[1] == minute && canilla3_prendida_hora[2]+3 >= second){
digitalWrite(bomba, HIGH);

}
} else {
canilla3_on = false;
canilla3_prendida_hora[0] = -1;
canilla3_prendida_hora[1] = -1;
canilla3_prendida_hora[2] = -1;
digitalWrite(canilla3, LOW);
digitalWrite(canilla1, LOW);
digitalWrite(bomba, LOW);

}
}

void mostrar_hora()
{
DateTime now = RTC.now();
Serial.print(monthDay);
Serial.print("/");
Serial.print(month);
Serial.print("/");
Serial.print(year);
Serial.print(" ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
Serial.print("Hora Unix:");
Serial.print(" ");
Serial.print(now.unixtime());
Serial.println();
}

void Mostrar_humedad()
{
Serial.print("Humedad:");
Serial.println(analogRead(0));
Serial.print("Estado Humedad:");
Serial.println(humedadno);

}

void leer_datos(){
char dato = Serial.read();
if (dato=='1'){
if (sector1){
digitalWrite(canilla1, LOW);
sector1 = 0;
} else {
digitalWrite(canilla1, HIGH);
sector1 = 1;
}
} else if (dato=='2'){
if (sector2){
digitalWrite(canilla2, LOW);
sector2 = 0;
} else {
digitalWrite(canilla2, HIGH);
sector2 = 1;
}
}
else if (dato=='3'){
if (sector3){
digitalWrite(canilla3, LOW);
sector3 = 0;
} else {
digitalWrite(canilla3, HIGH);
sector3 = 1;
}
}
else if (dato=='b'){
if (bomba1){
digitalWrite(bomba, LOW);
bomba1 = 0;
} else {
digitalWrite(bomba, HIGH);
bomba1 = 1;
}
}
else if (dato=='m')
{
mostrar_hora();
Mostrar_humedad();
}
}

Bueno como veran es un poco desastrozo , es mi primer trabajo en arduino

pero bueno vamos al caso si veen esta la funcion leer_datos()

Esa funcion es para leer los datos del Bluethoo , hasta ahi perfecto:

Cuando pongo 1 , abre el relay 1 , osea canilla 1
Cuando pongo 2 ......

Asi todas las cosas que estan ahi , que sucede ahora ?

Es algo medio extraño el problema que cuando en el loop cargo la funcion "comenzar_riego" esto de leer datos no deja de funcionar pero la arduino tira poco voltaje (? , osesa que los relay no abren pero la luz se prende muy poco...

Lo extraño es que cuando saco del loop la funcion comenzar_riego , el circuito vuelve a funcionar todo correctamente.

Esto me paso despues de que cambie la forma de obtener la hora y agregue la libreria rtc