adaptar pantalla y teclado para maceracion de cerveza

Hola a todos y gracias de antemano.
Escribo para hacer una consulta sobre la programacion de mi arduino uno atmega 16u2.
Anduve largo tiempo liado realizando una programacion para llevar a cabo el proceso de maceracion de cerveza mediante arduino. Al final consegui el proposito supongo que con muchos errores, pero funciona. Os muestro la programacion:

int rela = 2;
int relb = 3;
int pina = 5;
int pinb = 6;
int pinc = 4;
int ledv = 10;
int leda = 16;
int ledr = 15;
int i = 0;
int u = 0;
int o = 0;
void setup()
{
  pinMode(rela, OUTPUT);
 pinMode(relb, OUTPUT);
pinMode(pina, INPUT);
pinMode(pinb, INPUT);
pinMode(pinc, INPUT);
pinMode(ledv, OUTPUT);
pinMode(leda, OUTPUT);
pinMode(ledr, OUTPUT);
}
void loop()
{
if(digitalRead(pinc))      //si pulsamos interruptor de arduino
{ 
while ( o <=1)//solo lo repetira una vez
  {
digitalWrite(rela, HIGH); //activamos proceso i rele de termostato1=resistencia 
o++;  
i = digitalRead (0);
}}
if(digitalRead(pina )){//cuando termostato1 llega a la temperatura y entra rele de alarma 
 while  ( i <=1 ) //repetimos el proceso solo una vez
  {
  if ( o ==2){
 digitalWrite (ledv, HIGH);
  delay(5000);//esperar x segundos. 1ª parada de maceracion
  digitalWrite (ledv, LOW);
  digitalWrite(rela, LOW);//desactivamos rele de termostato1=resistencia 
  digitalWrite(relb, HIGH);//activamos rele de termostato2=resistencia 
i++;  
u = digitalRead (0);
}
else {
  i++;
}
}}
 if(digitalRead(pinb )){   //si entra alm de termostato 2
  while ( u <=1)    //repetimos el proceso solo una vez
  {
    if  ( i ==2 ){
 digitalWrite (leda, HIGH); 
 delay(5000);//esperar x segundos.2ª parada de maceracion
 digitalWrite (leda, LOW);
 digitalWrite(relb, LOW);
 digitalWrite(rela,LOW);  //caer los dos reles de resistencia 1
digitalWrite (ledr, HIGH);
u++;
    }
 else{
 u++;
 }
  }}
 if (digitalRead (rela)){
  digitalWrite (ledr,LOW);
   digitalWrite (ledv, HIGH);
 delay (200);
digitalWrite (ledv, LOW);
delay (200);
 }
if (digitalRead (relb) == HIGH && digitalRead (rela) == LOW){
  digitalWrite (leda, HIGH);
  delay (200);
  digitalWrite (leda, LOW);
  delay (200);
}}

Ahora viene mi quebradero de cabeza, y es que como los tiempos de pausa del macerado varian de un tipo a otro de cerveza, pense que no era un buen plan el tener que estar conectando con el ordenador, cada dos por tres, para cambiar los delay de la programacion. Se me ocurrio que con un teclado y una pantallita le indicaria los tiempos de los delay y asunto arreglado. Pero me estoy volviendo loco intentando comprender los programas ya realizados con teclados y pantallas asi que he decidido pediros ayuda. La programacion que muestro acontinuacion seria la que añadiria a la anterior. Esto es todo lo que he sacado en claro:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 13, 10, 9, 8); //pines de control de la lcd
#include <Keypad.h>
const byte filas = 4; //four rows
const byte columnas = 3; //three columns
char teclas[filas][columnas] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
byte PinsFilas[filas] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte PinsColumnas[columnas] = {8, 7, 6}; //connect to the column pinouts of the keypad
Keypad teclado = Keypad( makeKeymap(teclas), PinsFilas, PinsColumnas, filas, columnas );
char tecla;
void setup(){
  Serial.begin(9600);
  }
void loop(){
  char tecla = teclado.getKey();
if (key != NO_KEY){
    Serial.println(key);
  }
}

Me he bloqueado. Quizas de intentar comprender tanto programa realizado por otra gente y no coger un buen tutorial.
Lo que intento es que cuando conecto el arduino me de la opcion de elegir los minutos de espera que quiero en cada escalon y una vez arranque en el renglon de arriba aparezca tiempo 1 y al lado los minutos y segundos descontando. En el renglon de abajo de la pantalla apareceria tiempo 2 y el tiempo programado. Este comenzaria a descontar cuando llegara su turno. Me gustaria elegir solo los minutos y que en la pantalla aparezca, cuando esta descontando o en espera, minutos y segundos. No se si esto sera mucho pedir o si este foro no esta para este tipo de consultas. De todas formas gracias.

Tamaña maraña en la que te has metido totpillat!!! mira tal vez si RESETEAS la idea y retomas desde donde la empesaste surjan algunas alternativas mas SIMPLES, se me ocurre la siguiente:

Utilizas un potenciometro para el valor de delay, o sea la posicion se corresponde con la cantidad digamos de minutos y con una Led de un color que tal rojo indicas el estado del sistema (puedes apagarlo cuanddo comienza y que titile mientras este corriendo el tiempo, hasta quedar encendido cuando ya se cumplio...)

Podiras agregar un boton simplemente para indicar que tome el valor de tiempo del potenciometro y comience nuevamente con el proceso....

Que te parece? no es que no quiera ayudarte con lo que necesitas del display si no que soy alergico a los embrollos!!!

XD jajaja.Te entiendo. Me parece buena idea lo del potenciometro. Voy a darle unas vueltas a ver si lo planteo de alguna manera. Muchas Gracias.
De todas formas el teclado lo tengo y funciona. Solo me falta ponerme con el tema de como introducir valores ,que los memorice y que los utilice para ir descontando. Gracias.