Reloj_Alarma(ingresa por comunicación serial)

Hola con todos... tengo una inquietud recién estoy empezando en esto y no se muy bien varias cosas, lo que no entiendo es como puedo almacenar los datos que ingreso por serial para compararlos con los datos del reloj.
al ser un reloj necesito dos dígitos (00:12:00) necesito que al aplastar eso en mi teclado salga lo mismo en la pantalla lcd como en el caso de esta imagen
https://drive.google.com/open?id=1i5KruWa_w5aH1TOL0Uz6NP1ZyJBqC07u

Pero en mi caso eso no sucede me pasa lo que está en esta imagen
https://drive.google.com/open?id=11A7QP7xZUvmRqQe9KDFyRcw8lXMVUYwP

y al momento que la hora llega a la hora de alarma no pasa nada

include <TimerOne.h>
#include <LiquidCrystal.h>
//RS --> 13
//E --> 12
//D4 --> 11
//D5 --> 10
//D6 --> 9
//D7 --> 8
LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
int h = 0;   // para las horas
int m = 1;  // para los minutos
int s = 50 - 1; // para los segundos que inicie en 00
boolean actualizar = true;
char h_ingresa;
char m_ingresa;
String h_alarma;
String m_alarma;
void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);   // inicializar la lcd
  lcd.clear();        // que la lcd este sin datos
  pinMode(5, OUTPUT);
  Timer1.initialize(1000000);     //cada 1s se produce una interrupción por lo que es un reloj
  Timer1.attachInterrupt(manejodeltimer);           // cada que pase un segundo que realize la función de manejo
}
void manejodeltimer () {  // cada que se ejecute la interrupción va a realizar esta función.

  s++;                    // cada que pase un segundo se incremete la variable de los segundos
  actualizar = true;     // si se incrementa s entonces actualizar es true
}
void RelojActualizado () {

  if (s > 59) {     // para que cuando los segundos lleguen a 59 incrementen los minutos y los segundos vuelva a cero
    m++;
    s = 0;
  }
  if (m > 59) {    // para que cuando los minutos lleguen a 60 incrementen las horas y los minutos vuelvan a cero
    h++;
    m = 0;
  }
  if (h > 23) {   // si las horas son mayores a 23 vuelven a cero todo
    h = 0;
    m = 0;
    s = 0;
  }
}

void loop() {
  if (Serial.available() > 0) {
    while (Serial.available() > 0) {
      h_ingresa = Serial.read(); //leer palabras
      h_alarma += h_ingresa;
    }
    while (Serial.available() > 0) {
      m_ingresa = Serial.read(); //leer palabras
      m_alarma += m_ingresa;
  }
  if (m_alarma == m && h_alarma ==h){
    digitalWrite(5, HIGH);
  }
}
  if (actualizar == true) {  // si se a incrementado los segundos, entonces se ejecuta el loop
    RelojActualizado ();     // se ejecuta la actualización del reloj
    //RELOJ
    lcd.setCursor(0, 0);      // primera fila de la lcd
    if (h < 10)lcd.print("0"); // si las horas son menores a 10 imprime un cero delante
    lcd.print(h);             // imprimirá las horas
    lcd.print(":");           // imprimirá un espacio
    if (m < 10)lcd.print("0"); // si los minutos son menores a 10 imprime un cero delante
    lcd.print(m);             // imprimirá los minutos
    lcd.print(":");           // imprimirá un espacio
    if (s < 10)lcd.print("0"); // si los segundos son menores a 10 imprime un cero delante
    lcd.print(s);             // imprimirá los segundos
    lcd.print("   RELOJ");
    //ALARMA
    lcd.setCursor(0, 1);
    lcd.print(h_alarma);
    lcd.setCursor(2, 1);
    lcd.print(":");
    lcd.setCursor(3, 1);
    lcd.print(m_alarma);
    lcd.setCursor(5, 1);
    lcd.print(":");
    lcd.setCursor(8, 1);
    lcd.print("  ALARMA");
    actualizar = false;       // si no se incrementa segundo entonces no se ejecuta el loop
  }

}