Reloj en tiempo real con Arduino

El primer código que utilicé lo que saqué de esta página: Módulo RTC DS1307 con Arduino - TuElectronica.es en la que aparecen dos códigos, uno en el que se pone en hora al reloj a partir de la del ordenador, y un segundo código que muestra la hora en el monitor serial:
El de la puesta en hora

#include <Wire.h> 
#include "RTClib.h"
RTC_DS1307 RTC;

void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora
}

void loop () {
 
}

y el del monitor serial.

#include <Wire.h>   // Incluye la librería Wire
#include "RTClib.h" // Incluye la librería RTClib
RTC_DS1307 RTC; // Crea el objeto RTC

void setup () {
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
Wire.begin(); // Establece la velocidad de datos del bus I2C
RTC.begin(); // Establece la velocidad de datos del RTC
}

void loop () {
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

delay(1000); // La información se actualiza cada 1 seg.
}

El problema que tuve con estos códigos, fue que en primer lugar no sabía como almacenar la hora en una variable o algo para poder utilizarla luego en un if y el segundo fue el problema de que no se guardaba la hora cuando había un corte de luz.
En cuanto al tipo de reloj que he utilizado, compré en ebay un módulo ya montado exactamente igual al que pones en la foto, que además, como ya dije, incluye una memoria.
¡Gracias por responder y un saludo!