¿Sleep con tiempo e Interrupciones?

Esto que pones

LLevo toda la tarde buscando la manera de:
*poner el arduino en modo SLEEP durante un periodo determinado (59 minutos)
*Si se pulsa un botón conectado al Pin 2 (interrupción 0) debe recobrar el el funcionamiento

Es un ejemplo de la libreria Low Power

MIra el ejemplo powerDownWakeExternalInterrupt.ino

// **** INCLUDES *****
#include "LowPower.h"

// Use pin 2 as wake up pin
const int wakeUpPin = 2;

void wakeUp()
{
    // Just a handler for the pin interrupt.
}

void setup()
{
    // Configure wake up pin as input.
    // This will consumes few uA of current.
    pinMode(wakeUpPin, INPUT);   
}

void loop() 
{
    // Allow wake up pin to trigger interrupt on low.
    attachInterrupt(0, wakeUp, LOW);
    
    // Enter power down state with ADC and BOD module disabled.
    // Wake up when wake up pin is low.
    LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); 
    
    // Disable external pin interrupt on wake up pin.
    detachInterrupt(0); 
    
    // Do something here
    // Example: Read sensor, data logging, data transmission.
}

Esto lo despierta con un low en pin2 o sea.. un pulsador directo entre pin y gnd. presionas y despierta.

Ahora como extiendes el tiempo?

Esto lo pone a dormir por 8 seg que es la máxima duración

// Enter power down state for 8 s with ADC and BOD module disabled
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Para extener el tiempo simplemente lo pones en un loop de multiplos de 8 segundos y ya.
se duerme, se despierta, sigue el loop, se duerme se desierta sigue otro paso del loop y asi.