Como ajuntar esses dois codigos

Alguém pode ajudar ou ajuntar esses dois código pra mim ? tentei mais não consegui deu vários erros
vo posta o primeiro código aqui e daqui 5 minutos posto o segundo embaixo porque da mais de 9000 caracteres

#include <Password.h> // Biblioteca utilizada para controle de senha.
#include <Keypad.h> // Biblioteca para controle do teclado de matrizes.



// Senha utilizada para acionamento do rele.
Password password0 = Password( "10" );
Password password1 = Password( "11" );
Password password2 = Password( "12" );
Password password3 = Password( "13" );
 
const byte ROWS = 4;  // Quatro linhas por...
const byte COLS = 4;  // Quatro colunas.

// Define o Keypad (mapa do circuito do teclado).
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

// Conecta o teclado matricial em linha 0, linha 1, linha 2, linha 3 e linha 4... 
//dos pinos do arduino.
byte rowPins[ROWS] = {13,12,11,10};

// Conecta o teclado matricial em coluna 0, coluna 1, coluna 2, coluna 3 e...  
//coluna 4 do arduino.
byte colPins[COLS] = {9,8,7,6};

// Cria um objeto Keypad.
Keypad keypad=Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup(){
  pinMode(5, OUTPUT);  // Define pino 5 como saída.
  Serial.begin(9600);  // Inicializa Serial Monitor.
  keypad.addEventListener(keypadEvent);
  keypad.setDebounceTime(250);

  pinMode(4, OUTPUT);  // Define pino 4 como saída.
  Serial.begin(9600);  // Inicializa Serial Monitor.
  keypad.addEventListener(keypadEvent);
  keypad.setDebounceTime(250);

  pinMode(3, OUTPUT);  // Define pino 3 como saída.
  Serial.begin(9600);  // Inicializa Serial Monitor.
  keypad.addEventListener(keypadEvent);
  keypad.setDebounceTime(250);

  pinMode(2, OUTPUT);  // Define pino 3 como saída.
  Serial.begin(9600);  // Inicializa Serial Monitor.
  keypad.addEventListener(keypadEvent);
  keypad.setDebounceTime(250);

}

void loop(){
  keypad.getKey();
}

void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){  // Condição switch...
    case PRESSED:  // Se precionado algum botão...
   Serial.print("Digitado: ");  // Aparecera no Serial Monitor, Digitado: "X".
   Serial.println(eKey);  // Armazena numero digitado na variável eKey.
   switch (eKey){
   // Pressionando "C" confirma se a senha foi digitado corretamente.
     case 'C': guessPassword();  
     break; 
      default:
         password0.append(eKey);
         password1.append(eKey);
         password2.append(eKey);
         password3.append(eKey);
  }
}
}

void guessPassword(){ 
     if (password0.evaluate()){
   // Informa no Serial Monitor "Acionando rele...".
        Serial.println("Porta 1 Aberta !"); 
        digitalWrite(5, HIGH);   // Ativa o rele.
        delay(2000);  // Rele fica acionado por 2 segundos e depois...
        digitalWrite(5, LOW);   // Desativa o rele.
        password0.reset(); // Apaga a senha.
     }
     if (password1.evaluate()){
   // Informa no Serial Monitor "Acionando rele...".
        Serial.println("Porta 2 Aberta !"); 
        digitalWrite(4, HIGH);   // Ativa o rele.
        delay(2000);  // Rele fica acionado por 2 segundos e depois...
        digitalWrite(4, LOW);   // Desativa o rele.
        password1.reset(); // Apaga a senha.
     }
     if (password2.evaluate()){
   // Informa no Serial Monitor "Acionando rele...".
        Serial.println("Porta 3 Aberta !"); 
        digitalWrite(3, HIGH);   // Ativa o rele.
        delay(2000);  // Rele fica acionado por 2 segundos e depois...
        digitalWrite(3, LOW);   // Desativa o rele.
        password2.reset(); // Apaga a senha.
     }
     if (password3.evaluate()){
   // Informa no Serial Monitor "Acionando rele...".
        Serial.println("Porta 3 Aberta !"); 
        digitalWrite(2, HIGH);   // Ativa o rele.
        delay(2000);  // Rele fica acionado por 2 segundos e depois...
        digitalWrite(2, LOW);   // Desativa o rele.
        password3.reset(); // Apaga a senha.
     }
     else{       
                  Serial.println("");
                  digitalWrite(5, LOW);
                  digitalWrite(4, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(2, LOW);

                  password3.reset(); // Apaga a senha.
                  password2.reset(); // Apaga a senha.
                  password1.reset(); // Apaga a senha.
                  password0.reset(); // Apaga a senha.
             
     }
}
int luzsala = 31;
int luzcozinha = 30;
int luzcorredor = 32;
int luzbanheiro = 33;
int luzquarto = 34;
int luzquintal = 35;



boolean status1 = false;
boolean status2 = false;
boolean status3 = false;
boolean status4 = false;
boolean status5 = false;
boolean status6 = false;



void setup() {
  Serial.begin(9600); 

  pinMode(luzsala, OUTPUT);
  pinMode(luzcozinha, OUTPUT);
  pinMode(luzcorredor, OUTPUT);
  pinMode(luzbanheiro, OUTPUT);
  pinMode(luzquarto, OUTPUT);
  pinMode(luzquintal, OUTPUT);
  


  digitalWrite(luzsala, LOW);
  digitalWrite(luzcozinha, LOW);
  digitalWrite(luzcorredor, LOW);
  digitalWrite(luzbanheiro, LOW);
  digitalWrite(luzquarto, LOW);
  digitalWrite(luzquintal, LOW);
  
 

}

void loop() {

  char comando = Serial.read();

  int interruptorsala = digitalRead(39);
  int interruptorcozinha = digitalRead(38);
  int interruptorcorredor = digitalRead(40);
  int interruptorbanheiro = digitalRead(41);
  int interruptorquarto = digitalRead(42);
  int interruptorquintal = digitalRead(43);
  

  if (interruptorcozinha == HIGH) {
    if (status1) {

      digitalWrite(luzcozinha, LOW);
      status1 = false;
      Serial.println("1of");
    } else {

      digitalWrite(luzcozinha, HIGH);
      status1 = true;
      Serial.println("1on");
    }
    delay(250);
  }

  if (interruptorsala == HIGH) {
    if (status2) {

      digitalWrite(luzsala, LOW);
      status2 = false;
      Serial.println("2of");
    } else {

      digitalWrite(luzsala, HIGH);
      status2 = true;
      Serial.println("2on");
    }
    delay(250);
  }

  if (interruptorcorredor == HIGH) {
    if (status3) {

      digitalWrite(luzcorredor, LOW);
      status3 = false;
      Serial.println("3of");
    } else {

      digitalWrite(luzcorredor, HIGH);
      status3 = true;
      Serial.println("3on");
    }
    delay(250);
  }

  if (interruptorbanheiro == HIGH) {
    if (status4) {

      digitalWrite(luzbanheiro, LOW);
      status4 = false;
      Serial.println("4of");
    } else {

      digitalWrite(luzbanheiro, HIGH);
      status4 = true;
      Serial.println("4on");
    }
    delay(250);
  }

  if (interruptorquarto == HIGH) {
    if (status5) {

      digitalWrite(luzquarto, LOW);
      status5 = false;
      Serial.println("5of");
    } else {

      digitalWrite(luzquarto, HIGH);
      status5 = true;
      Serial.println("5on");
    }
    delay(250);
  }

  if (interruptorquintal == HIGH) {
    if (status6) {

      digitalWrite(luzquintal, LOW);
      status6 = false;
      Serial.println("6of");
    } else {

      digitalWrite(luzquintal, HIGH);
      status6 = true;
      Serial.println("6on");
    }
    delay(250);
  }

 

  if(comando == 'a') {
    if (status1) {
      digitalWrite(luzcozinha, LOW);
      status1 = false;
      Serial.println("1of");
    } else {
      digitalWrite(luzcozinha, HIGH);
      status1 = true;
      Serial.println("1on");
    }
  }

  if(comando == 'b') {
    if (status2) {
      digitalWrite(luzsala, LOW);
      status2 = false;
      Serial.println("2of");
    } else {
      digitalWrite(luzsala, HIGH);
      status2 = true;
      Serial.println("2on");
    }
  }

  if(comando == 'c') {
    if (status3) {
      digitalWrite(luzcorredor, LOW);
      status3 = false;
      Serial.println("3of");
    } else {
      digitalWrite(luzcorredor, HIGH);
      status3 = true;
      Serial.println("3on");
    }
  }

  if(comando == 'd') {
    if (status4) {
      digitalWrite(luzbanheiro, LOW);
      status4 = false;
      Serial.println("4of");
    } else {
      digitalWrite(luzbanheiro, HIGH);
      status4 = true;
      Serial.println("4on");
    }
  }

  if(comando == 'e') {
    if (status5) {
      digitalWrite(luzquarto, LOW);
      status5 = false;
      Serial.println("5of");
    } else {
      digitalWrite(luzquarto, HIGH);
      status5 = true;
      Serial.println("5on");
    }
  }

  if(comando == 'f') {
    if (status6) {
      digitalWrite(luzquintal, LOW);
      status6 = false;
      Serial.println("6of");
    } else {
      digitalWrite(luzquintal, HIGH);
      status6 = true;
      Serial.println("6on");
    }
  }

  if(comando == 's') {
    if (status1) {

      Serial.println("1on");
    } else {

      Serial.println("1of");
    }
    delay(250);

    if (status2) {

      Serial.println("2on");
    } else {

      Serial.println("2of");
    }
    delay(250);

    if (status3) {

      Serial.println("3on");
    } else {

      Serial.println("3of");
    }
    delay(250);
    
    if (status4) {

      Serial.println("4on");
    } else {

      Serial.println("4of");
    }
    delay(250);
    
    if (status5) {

      Serial.println("5on");
    } else {

      Serial.println("5of");
    }
    delay(250);
    
    if (status6) {

      Serial.println("6on");
    } else {

      Serial.println("6of");
    }
    delay(250);

    
  }
}

Tem que explicar melhor o que quer fazer. Combinar os dois programas não faz muito sentido. Vendo aquilo que faz o segundo programa (e como isso é feito) e vendo o primeiro programa, não entendo qual é a lógica de combinar os 2 programas. Quer que o estado das luzes só seja alterado após ter sido introduzida a password correcta, ou quer que o estado das luzes seja alterado com o teclado (em vez de com os botões como está a ser feito no segundo programa)?