como reiniciar timer con los datos programados

amigos podrian ayudarme con un codigo, me funciona bien pero no logro hacer que al terminar y volver a darle la orden de inicio empieze en el tiempo que le programe en este caso seria preset 1,
ya que tengo que llamar manualmente el dato para que lo realize

#include <EEPROM.h>
#include <LiquidCrystal.h>

#define Bpreset1 A1
//#define Bpreset2 2
//#define Bpreset3 3
#define Bsegundos A2
#define Bminutos A3
#define Bcomienzo A4

#define pinSalida A5

#define MApreset1 1
//#define MApreset2 2
//#define MApreset3 3

//Tiempo
byte minutos;
byte segundos;

// LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {

pinMode(Bcomienzo, INPUT);
pinMode(Bminutos, INPUT);
pinMode(Bsegundos, INPUT);
pinMode(pinSalida, OUTPUT);
pinMode(Bpreset1, INPUT);
//pinMode(Bpreset2, INPUT);
// pinMode(Bpreset3, INPUT);
pinMode(speakerPin, OUTPUT);
//pinMode(buzzerPin, OUTPUT);

lcd.begin(16, 2);
lcd.setCursor(3,0);
lcd.print("BIENVENIDO");
delay(3000);
lcd.setCursor(2,1);
lcd.print("CIBER ARIES");
delay(3000);
lcd.clear();

lcd.setCursor(2,0);
lcd.print("Insertar");
lcd.setCursor(4,1);
lcd.print("Monedas");
delay(3000);
lcd.clear();

minutos = 0;
segundos = 0;
}

///////////////-----------------------------------------------------------------/////
//////////////--------------------------MARCHA IMPERIAL ------------------------/////

void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{

int x;
long delayAmount = (long)(1000000/frequencyInHertz);
long loopTime = (long)((timeInMilliseconds1000)/(delayAmount2));
for (x=0;x<loopTime;x++)
{
digitalWrite(speakerPin,HIGH);
delayMicroseconds(delayAmount);
digitalWrite(speakerPin,LOW);
delayMicroseconds(delayAmount);
}

delay(20);
//a little delay to make all notes sound separate
}

void march()
{

beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, f, 350);
beep(speakerPin, cH, 150);

beep(speakerPin, a, 500);
beep(speakerPin, f, 350);
beep(speakerPin, cH, 150);
beep(speakerPin, a, 1000);
//first bit

beep(speakerPin, eH, 500);
beep(speakerPin, eH, 500);
beep(speakerPin, eH, 500);
beep(speakerPin, fH, 350);
beep(speakerPin, cH, 150);

beep(speakerPin, gS, 500);
beep(speakerPin, f, 350);
beep(speakerPin, cH, 150);
beep(speakerPin, a, 1000);
//second bit...

beep(speakerPin, aH, 500);
beep(speakerPin, a, 350);
beep(speakerPin, a, 150);
beep(speakerPin, aH, 500);
beep(speakerPin, gSH, 250);
beep(speakerPin, gH, 250);

beep(speakerPin, fSH, 125);
beep(speakerPin, fH, 125);
beep(speakerPin, fSH, 250);
delay(250);
beep(speakerPin, aS, 250);
beep(speakerPin, dSH, 500);
beep(speakerPin, dH, 250);
beep(speakerPin, cSH, 250);
//start of the interesting bit

beep(speakerPin, cH, 125);
beep(speakerPin, b, 125);
beep(speakerPin, cH, 250);
delay(250);
beep(speakerPin, f, 125);
beep(speakerPin, gS, 500);
beep(speakerPin, f, 375);
beep(speakerPin, a, 125);

beep(speakerPin, cH, 500);
beep(speakerPin, a, 375);
beep(speakerPin, cH, 125);
beep(speakerPin, eH, 1000);
//more interesting stuff (this doesn't quite get it right somehow)

beep(speakerPin, aH, 500);
beep(speakerPin, a, 350);
beep(speakerPin, a, 150);
beep(speakerPin, aH, 500);
beep(speakerPin, gSH, 250);
beep(speakerPin, gH, 250);

beep(speakerPin, fSH, 125);
beep(speakerPin, fH, 125);
beep(speakerPin, fSH, 250);
delay(250);
beep(speakerPin, aS, 250);
beep(speakerPin, dSH, 500);
beep(speakerPin, dH, 250);
beep(speakerPin, cSH, 250);
//repeat... repeat

beep(speakerPin, cH, 125);
beep(speakerPin, b, 125);
beep(speakerPin, cH, 250);
delay(250);
beep(speakerPin, f, 250);
beep(speakerPin, gS, 500);
beep(speakerPin, f, 375);
beep(speakerPin, cH, 125);

beep(speakerPin, a, 500);
beep(speakerPin, f, 375);
beep(speakerPin, c, 125);
beep(speakerPin, a, 1000);
//and we're done \ó/
}

void imprime_guardando(byte memo){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("GUARDANDO ");
lcd.setCursor(3,1);
lcd.print("MEMORIA ");
lcd.setCursor(11,1);
lcd.print(memo, 10);
delay(1500);
}

void imprime_leyendo(int val){
lcd.clear();
lcd.setCursor(4,0);
lcd.print("LEYENDO");
lcd.setCursor(3,1);
lcd.print("MEMORIA");
lcd.setCursor(11,1);
lcd.print(val, 10);
delay(2000);
lcd.clear();

}
void imprime_guardado_completo(){
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Success!");
delay(1500);

}
void anti_rebote_minutos (){

if (digitalRead(Bminutos)==HIGH){
delay(40);
if (digitalRead(Bminutos) == HIGH){
minutos += 1;
delay(90);
}
}
}

void anti_rebote_segundos (){

if (digitalRead(Bsegundos)==HIGH){
delay(40);
if (digitalRead(Bsegundos) == HIGH){
if(segundos <=58){
segundos += 1;
}else if(segundos = 59){
//limpiar caracter lcd
lcd.clear();
segundos = 0;
minutos += 1;
}
delay(50);
}
}
}

void print_comienzo(){

lcd.clear();
lcd.setCursor(4,0);
lcd.print("INICIO");
delay(2500);
lcd.clear();

}

void print_cuenta_atras(){

do{

if (segundos > 0){

lcd.clear();
lcd.setCursor(0,0);
lcd.print("MINUTOS: ") ;
lcd.print(minutos, 10);
lcd.setCursor(0,1);
lcd.print("SEGUNDOS: ");
lcd.print(segundos, 10);
delay (1000);
segundos --;

}

if (minutos > 0){
if (segundos <= 0){
minutos--;
segundos = 59;
}

}
}while (segundos != 0);

}

void print_finalizado(){

lcd.clear();
lcd.setCursor(3,0);
lcd.print("TIEMPO");
lcd.setCursor(3,1);
lcd.print("TERMINADO");
delay(1000); //////////////////////////////////
lcd.clear();
lcd.setCursor(3,0);
// lcd.print("Thinking4u");
//lcd.setCursor(0,2);
// lcd.print("Design Carlitoss");

}

void check_preset(byte button, byte memoryAddress){

if (digitalRead(button)==HIGH){
delay(10);
if(digitalRead(button)==HIGH){
delay(1000);
if (digitalRead(button) == LOW){
//Se ha soltado, leemos de eeprom
imprime_leyendo(memoryAddress);
minutos = EEPROM.read(memoryAddress);
delay(100);
segundos = EEPROM.read(memoryAddress+10);
delay(100);
lcd.clear();

} else if (digitalRead(button) == HIGH){ //Sigue pulsado write a eeprom
imprime_guardando(memoryAddress);
delay(100);
EEPROM.write(memoryAddress, minutos);
delay(100);
lcd.clear();
//imprime_guardando(segundos);
EEPROM.write(memoryAddress+10, segundos);
delay(500);
imprime_guardado_completo();
delay(500);
lcd.clear();
}
}
}
}

void loop() {

anti_rebote_minutos();
anti_rebote_segundos();
check_preset(Bpreset1, MApreset1);
//check_preset(Bpreset2, MApreset2);
//check_preset(Bpreset3, MApreset3);
delay(20);

lcd.setCursor(0,0);
lcd.print("MINUTOS: ");
lcd.print(minutos,10);
lcd.setCursor(0,1);
lcd.print("SEGUNDOS: ");
lcd.print(segundos,10);

if(digitalRead(Bcomienzo) == HIGH){
delay (40);
if(digitalRead(Bcomienzo) == HIGH){
print_comienzo();
digitalWrite(pinSalida, 1);
print_cuenta_atras();
digitalWrite(pinSalida, 0);
print_finalizado();
march(); // SONIDO DE BUZZER FINALIZADO
lcd.clear();
//----------------------------------------------------------------------

Primero los códigos se presentan usando esto

Ahora veamos tu problema, no veo a que tiempo refieres como Preset1 ya que hay varios tags con ese nombre preset y apuntan a pines.
Luego veo variables minutos, segundos que estan inicializadas a 0.
Asi debe verse tu código (no cambié nada)

#include <EEPROM.h>
#include <LiquidCrystal.h>

#define Bpreset1 A1
//#define Bpreset2 2
//#define Bpreset3 3
#define Bsegundos A2
#define Bminutos A3
#define Bcomienzo A4

#define pinSalida A5

#define MApreset1 1
//#define MApreset2 2
//#define MApreset3 3


 
//Tiempo
byte minutos;
byte segundos;

// LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


void setup() {
   
   pinMode(Bcomienzo, INPUT);
   pinMode(Bminutos, INPUT);
   pinMode(Bsegundos, INPUT);
   pinMode(pinSalida, OUTPUT);
   pinMode(Bpreset1, INPUT);
   //pinMode(Bpreset2, INPUT);
  // pinMode(Bpreset3, INPUT);
   pinMode(speakerPin, OUTPUT); 
   //pinMode(buzzerPin, OUTPUT);
  
  lcd.begin(16, 2);
  lcd.setCursor(3,0);
  lcd.print("BIENVENIDO");
  delay(3000);
  lcd.setCursor(2,1);
  lcd.print("CIBER ARIES");
  delay(3000);   
  lcd.clear();
  
    
  lcd.setCursor(2,0);
  lcd.print("Insertar");
  lcd.setCursor(4,1);
  lcd.print("Monedas");
  delay(3000);
  lcd.clear();
    
  minutos = 0;
  segundos = 0;  
}

///////////////-----------------------------------------------------------------/////
//////////////--------------------------MARCHA IMPERIAL ------------------------/////



void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{ 
   
    
    int x;     
    long delayAmount = (long)(1000000/frequencyInHertz);
    long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
    for (x=0;x<loopTime;x++)     
    {     
        digitalWrite(speakerPin,HIGH);
        delayMicroseconds(delayAmount);
        digitalWrite(speakerPin,LOW);
        delayMicroseconds(delayAmount);
    }        
    
    delay(20);
    //a little delay to make all notes sound separate
}     
      
void march()
{ 
    
    beep(speakerPin, a, 500); 
    beep(speakerPin, a, 500);     
    beep(speakerPin, a, 500); 
    beep(speakerPin, f, 350); 
    beep(speakerPin, cH, 150);
    
    beep(speakerPin, a, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
    beep(speakerPin, a, 1000);
    //first bit
    
    beep(speakerPin, eH, 500);
    beep(speakerPin, eH, 500);
    beep(speakerPin, eH, 500);    
    beep(speakerPin, fH, 350); 
    beep(speakerPin, cH, 150);
    
    beep(speakerPin, gS, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
    beep(speakerPin, a, 1000);
    //second bit...
    
    beep(speakerPin, aH, 500);
    beep(speakerPin, a, 350); 
    beep(speakerPin, a, 150);
    beep(speakerPin, aH, 500);
    beep(speakerPin, gSH, 250); 
    beep(speakerPin, gH, 250);
    
    beep(speakerPin, fSH, 125);
    beep(speakerPin, fH, 125);    
    beep(speakerPin, fSH, 250);
    delay(250);
    beep(speakerPin, aS, 250);    
    beep(speakerPin, dSH, 500);  
    beep(speakerPin, dH, 250);  
    beep(speakerPin, cSH, 250);  
    //start of the interesting bit
    
    beep(speakerPin, cH, 125);  
    beep(speakerPin, b, 125);  
    beep(speakerPin, cH, 250);      
    delay(250);
    beep(speakerPin, f, 125);  
    beep(speakerPin, gS, 500);  
    beep(speakerPin, f, 375);  
    beep(speakerPin, a, 125); 
    
    beep(speakerPin, cH, 500); 
    beep(speakerPin, a, 375);  
    beep(speakerPin, cH, 125); 
    beep(speakerPin, eH, 1000); 
    //more interesting stuff (this doesn't quite get it right somehow)
    
    beep(speakerPin, aH, 500);
    beep(speakerPin, a, 350); 
    beep(speakerPin, a, 150);
    beep(speakerPin, aH, 500);
    beep(speakerPin, gSH, 250); 
    beep(speakerPin, gH, 250);
    
    beep(speakerPin, fSH, 125);
    beep(speakerPin, fH, 125);    
    beep(speakerPin, fSH, 250);
    delay(250);
    beep(speakerPin, aS, 250);    
    beep(speakerPin, dSH, 500);  
    beep(speakerPin, dH, 250);  
    beep(speakerPin, cSH, 250);  
    //repeat... repeat
    
    beep(speakerPin, cH, 125);  
    beep(speakerPin, b, 125);  
    beep(speakerPin, cH, 250);      
    delay(250);
    beep(speakerPin, f, 250);  
    beep(speakerPin, gS, 500);  
    beep(speakerPin, f, 375);  
    beep(speakerPin, cH, 125); 
           
    beep(speakerPin, a, 500);            
    beep(speakerPin, f, 375);            
    beep(speakerPin, c, 125);            
    beep(speakerPin, a, 1000);       
    //and we're done \ó/    
}

void imprime_guardando(byte memo){
  lcd.clear();
  lcd.setCursor(3,0);
  lcd.print("GUARDANDO ");
  lcd.setCursor(3,1);
  lcd.print("MEMORIA ");
  lcd.setCursor(11,1);
  lcd.print(memo, 10);
  delay(1500);
}

void imprime_leyendo(int val){
  lcd.clear();
  lcd.setCursor(4,0);
  lcd.print("LEYENDO");
  lcd.setCursor(3,1);
  lcd.print("MEMORIA");
  lcd.setCursor(11,1);
  lcd.print(val, 10);
  delay(2000);
  lcd.clear();

}
void imprime_guardado_completo(){
  lcd.clear();
  lcd.setCursor(4,0);
  lcd.print("Success!");
  delay(1500);

}
void anti_rebote_minutos (){

if (digitalRead(Bminutos)==HIGH){
    delay(40);
    if (digitalRead(Bminutos) == HIGH){
    minutos += 1;
    delay(90);
    }
   }
   }
   
   
void anti_rebote_segundos (){

if (digitalRead(Bsegundos)==HIGH){
    delay(40);
    if (digitalRead(Bsegundos) == HIGH){
    if(segundos <=58){
    segundos += 1;
    }else if(segundos = 59){
    //limpiar caracter lcd
    lcd.clear();
    segundos = 0;
    minutos += 1;
    }
    delay(50);
    }
   }
   }
  
void print_comienzo(){
    
    lcd.clear();
    lcd.setCursor(4,0);
    lcd.print("INICIO");
    delay(2500);
    lcd.clear();

}

void print_cuenta_atras(){

do{

  if (segundos > 0){
             
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("MINUTOS: ") ;
      lcd.print(minutos, 10);
      lcd.setCursor(0,1);
      lcd.print("SEGUNDOS: ");
      lcd.print(segundos, 10);
      delay (1000);
      segundos --;   
         
  }
   
  if (minutos > 0){
      if (segundos <= 0){
      minutos--;
      segundos = 59; 
      }
  
  }
 }while (segundos != 0);

}

void print_finalizado(){

  lcd.clear();
  lcd.setCursor(3,0);
  lcd.print("TIEMPO");
  lcd.setCursor(3,1);
  lcd.print("TERMINADO");
  delay(1000);   //////////////////////////////////
  lcd.clear();
  lcd.setCursor(3,0);
 // lcd.print("Thinking4u");
  //lcd.setCursor(0,2);
 // lcd.print("Design Carlitoss");

}


void check_preset(byte button, byte memoryAddress){
    
    if (digitalRead(button)==HIGH){
        delay(10);
        if(digitalRead(button)==HIGH){
            delay(1000);
            if (digitalRead(button) == LOW){
               //Se ha soltado, leemos de eeprom
               imprime_leyendo(memoryAddress);
               minutos = EEPROM.read(memoryAddress); 
               delay(100);
               segundos = EEPROM.read(memoryAddress+10);
               delay(100);
               lcd.clear();
               
            } else if (digitalRead(button) == HIGH){    //Sigue pulsado write a eeprom
               imprime_guardando(memoryAddress);
               delay(100);
               EEPROM.write(memoryAddress, minutos);
               delay(100);
               lcd.clear();
               //imprime_guardando(segundos);
               EEPROM.write(memoryAddress+10, segundos);
               delay(500); 
               imprime_guardado_completo();
               delay(500);
               lcd.clear();
            }
        }
    }
}


void loop() {
 
 
   anti_rebote_minutos();
   anti_rebote_segundos();
   check_preset(Bpreset1, MApreset1);
   //check_preset(Bpreset2, MApreset2);
   //check_preset(Bpreset3, MApreset3);
   delay(20);
     
   lcd.setCursor(0,0);
   lcd.print("MINUTOS: ");
   lcd.print(minutos,10);
   lcd.setCursor(0,1);
   lcd.print("SEGUNDOS: ");
   lcd.print(segundos,10);
   
   if(digitalRead(Bcomienzo) == HIGH){
      delay (40);
      if(digitalRead(Bcomienzo) == HIGH){
        print_comienzo();
        digitalWrite(pinSalida, 1);
        print_cuenta_atras();
        digitalWrite(pinSalida, 0);
        print_finalizado();
        march();                  // SONIDO DE BUZZER FINALIZADO
        lcd.clear();
}