ayuda código error al compilar

Hola buenas, quiero hacer con un teclado matricial de 3x4 un acceso con varios usuarios. encontré un código por Internet y lo estoy modificando ya que no quiero rfid me pueden ayudar????

CODIGO ORIGINAL:

#include <MFRC522.h>//Descargar e incluir la librería

#include <SPI.h>

/*
Pins	SPI	   UNO  Mega2560  Leonardo
1 (NSS) SAD (SS)   10     53        10
2       SCK        13     52        SCK1
3       MOSI       11     51        MOSI1
4       MISO       12     50        MISO1
5       IRQ        *      *         *
6       GND       GND     GND       GND
7       RST        5      ?         Reset
8      +3.3V (VCC) 3V3     3V3       3.3V
* No necesario
*/

#define SAD 10
#define RST 5
MFRC522 nfc(SAD, RST);


#define ledPinAbierto    2
#define ledPinCerrado  3


void setup() {
  pinMode(ledPinAbierto  , OUTPUT);   
  pinMode(ledPinCerrado, OUTPUT);   
  SPI.begin();
  Serial.begin(115200);
  Serial.println("Buscando RC522");
  nfc.begin();
  byte version = nfc.getFirmwareVersion();
  if (! version) {//Entra si no encuentra el módulo.
    Serial.print("No ha encontrado RC522");
    while(1); //detener
  }

  Serial.print("Ha encontrado RC522");
  Serial.print("Firmware version 0x");
  Serial.print(version, HEX);
  Serial.println(".");
}

#define AUTHORIZED_COUNT 1 //Para autoriazar más tarjetas ponemos el número aqui y la añadimos abajo
byte Authorized[AUTHORIZED_COUNT][6] = {

                            {0x83, 0xF4, 0x8D, 0xC6, 0x3C,}
                           //,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, } ejemplo de como autorizar más tarjetas  0x83,.....
                            
                          };
                          
void printSerial(byte *serial);
boolean isSame(byte *key, byte *serial);
boolean isAuthorized(byte *serial);



void loop() {
  byte status;
  byte data[MAX_LEN];
  byte serial[5];
  boolean Abierto = false;
  digitalWrite(ledPinAbierto, Abierto);
  digitalWrite(ledPinCerrado, !Abierto);
  status = nfc.requestTag(MF1_REQIDL, data);

  if (status == MI_OK) {
    status = nfc.antiCollision(data);
    memcpy(serial, data, 5);
    
    if(isAuthorized(serial))
    { 
      Serial.println("Autorizado");
      Abierto = true;
    }
    else
    { 
      printSerial(serial);
      Serial.println("NO autorizado");
      Abierto = false;
    }
    
    nfc.haltTag();
    digitalWrite(ledPinAbierto, Abierto);
    digitalWrite(ledPinCerrado, !Abierto);
    delay(2000);
  }//if (status == MI_OK)

  delay(500);

}//void loop()

boolean isSame(byte *key, byte *serial)
{
    for (int i = 0; i < 4; i++) {
      if (key[i] != serial[i])
      { 
        return false; 
      }
    }
    
    return true;

}

boolean isAuthorized(byte *serial)
{
    for(int i = 0; i<AUTHORIZED_COUNT; i++)
    {
      if(isSame(serial, Authorized[i]))
        return true;
    }
   return false;
}

void printSerial(byte *serial)
{
        Serial.print("Serial:");
    for (int i = 0; i < 5; i++) {// aumentar a 5 para leer el número de la tarjeta completo
      Serial.print(serial[i], HEX);
      Serial.print(" ");
    }
}

CODIGO MODIFICADO

#include <Wire.h>  
#include <Keypad.h>
#include <LiquidCrystal.h>
const byte ledind=9;    //Rele del Abrepuertas
const int  timetoclean=3000;  //msecs en quitar información display      //aqui podemos introducir las personas a la que pertenecen los targetas 
unsigned long clearlcd;
boolean er;  //Cambia de estado cuando hay información en el display
//se utiliza para hacer limpieza del display
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns

char keys[ROWS][COLS] =
{ {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}};
 
byte rowPins[ROWS] = {7,6,5,4};// PINES PARA LAS FILAS
byte colPins[COLS] = {3,2,1};// PINES PARA LAS COLUMNAS

LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);// PINES PARA LA LCD

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

const byte ncodigos=3;  //Nº de codigos que queremos usar
//Detallamos los codigos que darán paso
char* Codkeypad[ncodigos]={"123456",
                           "654321",
                          "000000"}; 
//Detallamos los saludos correspondientes a cada código
char* nombreskeypad[ncodigos]={"Hola Sr. Merkel",
                               "Hola Sr. Rajoy",
                               "Buenas Sr. Pujol"};
String pass;
byte pos= 0;

void setup() {
  lcd.begin(16,2); 
  limpialcd();       //Procedimiento borrado display
  pinMode(ledind, OUTPUT);  //Definimos el pin13 de salida
  digitalWrite(ledind, LOW);  
}

void loop() {
 //45
void limpialcd(){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Pase su tarjeta o");
  lcd.setCursor(0,1);
  lcd.print("Teclee codigo:"); 
  er=false;
  pos=0;
  pass=""; } 
//55
//Hace de contador de digitos al introducir codigo y cuando
//ya se han introducido 6 digitos llama al procedimiento para
//su compruebacion
void password(char key) {
   pass+= key;
  lcd.setCursor(14+pos,1);
  lcd.print("*");
  if (pos<5) 
    pos++;
    else {comprueba_codigos();pos=0;}

}
//67
//Comprueba si el codigo introducido esta registrado
//si lo está da acceso
void comprueba_codigos() {
  boolean encontrada=false;
  for (byte a=0; a<ncodigos;a++){ 
          String pwd = String(Codkeypad[a]);
          if (pwd==pass) {
            lcd.setCursor(0,3);
            lcd.print(nombreskeypad[a]);
            encontrada=true;}}   
   lcd.setCursor(0,2);
   if (encontrada) {
  //80
              lcd.print("Codigo valido");
              digitalWrite(ledind, HIGH); 
              delay(500);  //Activamos el led durante 0,5 seg
              digitalWrite(ledind, LOW); }
   else 
            {lcd.print("Codigo invalido");
            lcd.setCursor(0,3); 
            lcd.print("Vuelvase a casa");}
            er=true;
            clearlcd=millis();}

SALUDOSSS