Datalogger di pressione

@docdoc ti posto un estratto del codice, dovrei avere implementato correttamente la macchina a stati, sono ancora dubbioso anche perchè di 3 stati usato praticamente è solo 1.........
rimane ancora come impostare l'allarme, non riesco a caricare nel oggetto DateTime le funzioni matematiche...... se non ci riesco passo al tempo in unix tanto indipendentemente dal orario a me serve avere misurazioni ogni ora

#define S_Start 0 //stato di inizializazione 
#define S_Wait 1 //stato di attesa interupt
#define S_Save 2 //stato di salvataggio dati 

void loop() {

  switch(Status){
      case 0:  
      digitalWrite(RELAY, HIGH); //eccito il relè/chiudo il contatto NO
      Status = S_Save;
      break;

      case 1:
      break;

      case 2:
        detachInterrupt(digitalPinToInterrupt(PIN_Int));
        DateTime now = rtc.now(); //carica in now data e ora attuali
        voltage0 = readChannel(ADS1115_COMP_0_GND); //Avvia lettura canale 0
        voltage1 = readChannel(ADS1115_COMP_1_GND); //Avvia lettura canale 1
        voltage2 = readChannel(ADS1115_COMP_2_GND); //Avvia lettura canale 2
        voltage3 = readChannel(ADS1115_COMP_3_GND); //Avvia lettura canale 3
        dataFile = SD.open("datalog.csv", FILE_WRITE); //apre file csv
  
        if (dataFile) {
            noInterrupts(); //disabilita gli interupts per evitare strane cose durante la scrittura
            dataFile.print(now.day(), DEC);
            dataFile.print('/');
            dataFile.print(now.month(), DEC);
            dataFile.print('/');
            dataFile.print(now.year(), DEC);
            dataFile.print(" ");
            dataFile.print(now.hour(), DEC);
            dataFile.print(':');
            dataFile.print(now.minute(), DEC);
            dataFile.print(':');
            dataFile.print(now.second(), DEC);
            dataFile.print(" ");
            dataFile.print(voltage0);
            dataFile.print(" ");
            dataFile.print(voltage1);
            dataFile.print(" ");
            dataFile.print(voltage2);
            dataFile.print(" ");
            dataFile.print(voltage3);
            dataFile.close();  //chiude file CSV
            interrupts();  //riabilita gli interrupts per il normale funzionamento
            Serial.println("scrittura file completata");
                        }
  
      else {
            Serial.println("Impossibile apreire datalog.txt");// if the file isn't open, pop up an error:
           }

    attachInterrupt(digitalPinToInterrupt(PIN_Int),AllarmISR, FALLING);
    rtc.setAlarm1(DateTime(now.year(),now.month(),now.day(), 0, 0, 0), DS3231_A1_Hour);  
    Status = S_Wait;
    break;
}

}

void AllarmISR() {
  Status=S_Save;
}

Ciao ThEnGI