Problema, flashear un led con keypad

hola la verdad no se mucho del keypay y estoy tratando de hacer un programa donde un led flashe dependiendo de que botón presione solo que acepta un digito solamente y lo que quiero hacer es que al presionar 1 y 3 digamos estos se sumen y flashe 4 veces que seria lo que debe, no se que esta mal en mi código si ya lo intente todo y solamente presionas el primer digito y no importa cual sea del 0-9 flashea 1 vez y en el segundo digito si prende las veces que se le seleccionaron aquí les dejo parte de mi código y espero y me ayuden a encontrar mi error

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns

int n, r, i;
char key, key2;

char keys[ROWS][COLS] =
{
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop()
{
  Serial.print("Cuantas veces flashea led: ");
  key = keypad.waitForKey();
  Serial.println(key);

  Serial.print("Cuantas veces flashea led: ");
  key2 = keypad.waitForKey();
  Serial.println(key2);
  Serial.println();

  if (key, key2 != '' && key, key2 != '#' && key, key2 != NO_KEY );
  {
    n = conv_int(key);
    for (i = 0; i < n; i++)
    {
      digitalWrite(13, HIGH);
      delay(200);
      digitalWrite(13, LOW);
      delay(200);
      if (key, key2 != '' && key, key2 != '#' && key, key2 != NO_KEY );
      {
        r = conv_int(key2);
        for (i = 0; i < r; i++)
        {
          digitalWrite(13, HIGH);
          delay(200);
          digitalWrite(13, LOW);
          delay(200);
        }
      }
    }
  }
}
int conv_int(char x)
{
  switch (x)
  {
    case '1': return 1; break;
    case '2': return 2; break;
    case '3': return 3; break;
    case '4': return 4; break;
    case '5': return 5; break;
    case '6': return 6; break;
    case '7': return 7; break;
    case '8': return 8; break;
    case '9': return 9; break;
    case '0': return 0; break;
  }

}

Esto no es correcto

if (key, key2 != '' && key, key2 != '#' && key, key2 != NO_KEY );
{
   ...
}

tu tienes que escribir

if (key != '#') && (key2 != '#') && (key != NO_KEY) && (key2 != NO_KEY) {
  ...
}

(¿Por qué te hiciste esta prueba dos veces?)

Como siempre una rutina que incluye delay() solo detiene lo que se espera que haga.
Debe reemplazarse por millis()