Impianto d'Irrigazione Interrato gestito da Arduino

Per quanto riguarda l'RTC (DS3231) non ho mai maneggiato la data ma solo l'ora, usando esclusivamente la libreria Wire (obbligatoria se non si vuole riscrivere a mano il protocollo i2c) e la tabella registri di pagina 11 del datasheet.

In pratica con queste due funzioni:

void leggiRTC()
{
    Wire.beginTransmission(0x68);   // <--- indirizzo RTC su bus i2c
    Wire.write(1);                  // <--- punta al registro 1 (minuti)
    Wire.endTransmission();
    Wire.requestFrom(0x68, 2);      // <--- due registri da leggere
    if(Wire.available() == 2)
    {
        minuti = BCDbin(Wire.read());
        ore = BCDbin(Wire.read());
    }
}
void impostaRTC()
{
    Wire.beginTransmission(0x68);   // <--- indirizzo RTC su bus i2c
    Wire.write(0);                  // <--- punta al registro 0 (secondi)
    Wire.write(0);                  // <--- azzera secondi RTC
    Wire.write(binBCD(minuti));     // <--- imposta minuti RTC
    Wire.write(binBCD(ore));        // <--- imposta ore RTC
    Wire.endTransmission();
}

E aiutandomi per la conversione binario<->BCD con queste due:

byte BCDbin(byte n)
{
    return ((n >> 4) * 10) + (n & 0x0F);
}
byte binBCD(byte n)
{
    return ((n / 10) << 4) | (n % 10);
}

Il tutto prevede due variabili globali 'ore' e 'minuti', che conterranno rispettivamente da 0 a 23 e da 0 a 59.