Modificar variable desde menú LCD y teclado matricual 4x4 [SOLUCIONADO]

Creo que el problema está en la función modificarhorasriego() ya que me muestra los datos correctos el LCD y cuando pulso un número con el teclado 4x4 me modifica de manera correcta el primer dígito que tiene que cambiar en el LCD, cuando pulso un segundo número, se me modifica el segundo dígito de la pantalla LCD de manera correcta, pero cuando pulso el tercer número en el teclado 4x4 se me sigue cambiando el segundo dígito de la pantalla LCD en vez del tercer número...

char key1 = keypad.getKey();
if (key1 != NO_KEY && (key1=='1'||key1=='2'||key1=='3'||key1=='4'||key1=='5'||key1=='6'||key1=='7'||key1=='8'||key1=='9'||key1=='0')){

 while (u<1){
       num1 =  key1;
       lcd.setCursor(12,1);
       lcd.print(num1);
       
          char key2 = keypad.getKey();
          if (key2 != NO_KEY && (key2=='1'||key2=='2'||key2=='3'||key2=='4'||key2=='5'||key2=='6'||key2=='7'||key2=='8'||key2=='9'||key2=='0')){
            num2 = key2;
            lcd.print(num2);
          }

          char key3 = keypad.getKey();
if (key3 != NO_KEY && (key3=='1'||key3=='2'||key3=='3'||key3=='4'||key3=='5'||key3=='6'||key3=='7'||key3=='8'||key3=='9'||key3=='0')){


       num3 =  key3;
       lcd.setCursor(15,1);
       lcd.print(num3);
       
          char key4 = keypad.getKey();
          if (key4 != NO_KEY && (key4=='1'||key4=='2'||key4=='3'||key4=='4'||key4=='5'||key4=='6'||key4=='7'||key4=='8'||key4=='9'||key4=='0')){
            num4 = key4;
            lcd.print(num4);
          }      
        }          
      }
    }

Alguna idea?????

Muchas gracias!