teclado matricial y led

Buenas, no esta probado ni tengo manera de probarlo, pero creo que debería de funcionar .
Un saludo

#include <Keypad.h>

const byte FILAS = 4; 
const byte COLUM = 3; 
char Teclas[FILAS][COLUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} };
byte PinsFilas[FILAS] = {5, 4, 3, 2};    //Pins de las filas
byte PinsColum[COLUM] = {8, 7, 6};       //Pines delas columnas

Keypad Teclado = Keypad( makeKeymap(Teclas), PinsFilas, PinsColum, FILAS, COLUM );

byte PinBuzzer = 9;                     

byte PinLed = 10;

const byte DigitosClave=4;
char Clave[DigitosClave] = {'1','2','3','4'};    
byte Coincidencias=0;
byte DigitosPulsados=0;

void setup()
{
  Serial.begin(9600);
  pinMode(PinBuzzer, OUTPUT); 
  pinMode(PinLed, OUTPUT);  
}

void Pitido(int Duracion, int Espera, int Repeticiones)
{
  for (int x=0; x<Repeticiones; x++)
  {
    analogWrite(PinBuzzer,128);         // Emite pitido
    delay(Duracion);                    // Tiempo de pitido
    digitalWrite(PinBuzzer, LOW); 
    delay(Espera);
  }
}

void loop()
{
  char key = Teclado.getKey();

  if (key != NO_KEY)                    // Hay tecla pulsada?
  {
    Pitido(250,0,1);   
    Serial.println(key);

    if(key=='*')                        // Abrir??
    {
      if(Coincidencias==DigitosClave)
      {
        Pitido(125,125,3);
        digitalWrite(PinLed, LOW);
        delay(4000);
        digitalWrite(PinLed, LOW);
      }
      key=='#';
    }
    
    if(key=='#')                        // Borrar
    {
      Coincidencias=0;
      DigitosPulsados=0;
      Pitido(500,0,1);
    }
    
    if (DigitosPulsados<DigitosClave && key==Clave[DigitosPulsados])    
    {                                    // No hemos pulado mas digitos que la clave y coinciden
      Coincidencias++;
      DigitosPulsados++;
    }
    else
    {
      DigitosPulsados=DigitosClave+1;  // Clave incorrecta,
      Coincidencias=0;                 // ya no controlamos mas hasta q borre
    }
  }
}