Temporizador usando epprom.

Hola a todos, disculpa que les moleste nuevamante. Gracias a su colaboracion termine el temporizador.
pero ahora lo estaba haciendo algunas modificaciones y me quede estancado. no se mucho de programacion , lo poco que se,fue leyendo foros y viendo videos pero todavia me falta mucho.

Les explico como funciona el temporizador o como quiero que funcione usando la memoria epprom de arduino.El temporizador tiene 3 botones , tengo 2 botones de mas y menos del 1 al 60 para guardar en la memoria epprom y el tercer boton coin para que comienze la cuenta regresiva en segundos .el problema que tengo es cuando esta en 00:00:00 y preciono el boton coin se duplica el valor osea si puse 5 con el mas, menos y precio coin me genera 10 y no 5 . cuando vuelvo precionar coin ahi recien me suma 5 al temporizador. Pido diculpa si estoy cometiendo alguna falta al reglamento.Gracias por todo.

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR    0x27
LiquidCrystal_I2C             lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7);
#include <EEPROM.h>
/*******************************************************************/
/*******************************************************************/
int Tiempo = EEPROM.read(2);
int ahoras = 0;                                //Variable a mostrar por LCD de las horas
int aminutos = 0;                              //Variable a mostrar por LCD de los minutos
int asegundos = 0;                             //Variable a mostrar por LCD de los segundos
int segundostotal = 0;                         //Tiempo total
int coin = 2;                                 //Pulsador de arranque
unsigned long tiempo1 = 0;
unsigned long tiempo2 = 0;
const byte RELE1 = 3;                            // Pin al que está conectado el relé
const byte RELE2 = 4;                        // Pin al que está conectado el relé
boolean estadoAnterior = LOW;
boolean estadoActual = LOW;

int mas;
int menos;
int CT=0;
int mxc;
/*******************************************************************/
/*******************************************************************/

Mucho delay veo, y un mal entendimiento a la hora de leer los botones. Te recomendaría que te leyerás el tutorial que hice sobre leer botones Como NO leer un botón y como SI debemos hacerlo., pero quizás no me hagas caso, así que lo voy a hacer sobre tu código.

    mas = digitalRead(5);     //leemos estado pin 3 y almacenamos en variable
    if (mas == HIGH)     //si boton + esta en alto agregamos 1 minuto al ciclo de trabajo
    {
      mxc = mxc + 1;
      mxc = max(mxc, 1); //limitamos valor inferior
      mxc = min(mxc, 60); //limitamos valor superior

      //MUESTRA MIN X CRED
      lcd.home ();                   // va a inicio de display
      lcd.print("Min x Credito:  ");
      lcd.setCursor ( 14, 0 );        //
      lcd.print(mxc);
      delay(300);
    }

Cuando tu aprietas el botón, que está conectado al pin 5, al hacer el digitalRead obtienes que es HIGH, incrementas el valor, lo muestras y haces el delay. No sabemos lo que tarda en ejecutarse el incremento y mostrar el valor pero será mucho menos que los 300ms del delay. ¿hasta aquí bien?

Supongamos que pulsas durante un segundo el botón. Eso quiere decir que durante 1000 ms el botón valdrá
HIGH, así que 1000/300 = 3.33, lo que mantienes el botón apretado entre lo que tarda en ejecutarse, da que esa sentencia de código se va a ejecutar 3 veces mínimo. La variable se va a incrementar en 3 seguro.

Como hay varios delay el programa no responde como tu quieres, así que la solución que tienes es apretar más tiempo el botón, con lo que pasa de esas 3 veces a 5 por lo menos.

Solución al problema, lee correctamente el botón tal y como indico en el tutorial.