Problema con contraseña

Hola comunidad, antes que nada me presento soy David, de Argentina y me estoy iniciando en el magniico mundo del arduino.
Soy tecnico electronico, pero por desgracia no pude aprender casi nada de PLC´s, Pic´c, Arduino, etc. durante mi periodo de estudios, asi que ahora me decidi por empezar con el Arduino.
Ya he echo varios programitas y dieron buenos resultados, pero se me presento un problema con una alarma activada/desactivada por contraseña.
Resulta que el codigo me anda perfecto con una pass y * activa la alarma y con el mismo codigo # la desactiva, pero el problema es que quiero que cuando la alarma ya esta desactivada y se ingrese el pass y #(el encargado de desarmar) me aparesca en el lcd que la alarma ya esta desarmada y lo mismo con el armado, mas alla que tiene tres led indicadores (Estado alarma, armada, desarmada) si ingreso de nuevo la pass + # estando desarmada me aparece todo de nuevo “ALARMA DESARMADA” “BIENVENIDO”.

Espero alla sido clara la pregunta, aca dejo el codigo… Desde ya Muchas gracias…

#include <Password.h>
#include <Keypad.h>
#include <LiquidCrystal.h>

Password password = Password ("123"); //Esta es la contraseña de armado y desarmado

LiquidCrystal lcd(14, 13, 12, 11, 10, 9);

const byte ROWS = 4;
const byte COLS = 3; 



char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte rowPins[ROWS] = {5, 4, 3, 2};
byte colPins[COLS] = {8, 7, 6};

// Create the Keypad

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

int estadoledarmado = 0; //Especificamos el estado inicial del led es 0(apagado)
int estadoleddesarmado = 1; //Especificamos el estado inicial del led es 1(encendido)

void setup()
{
  

  pinMode(15, OUTPUT); //Led armado
  pinMode(16, OUTPUT); //Led Estado de la alarma
  pinMode(17, OUTPUT); //Led desarmado

  
  lcd.begin(16, 2);
            lcd.setCursor(0,0);
            lcd.print("Iniciando");
            lcd.setCursor(0,1);
            lcd.print("alarma");
            delay(500);
            lcd.setCursor(6,1);
            lcd.print(".");
            delay(500);
            lcd.setCursor(7,1);
            lcd.print(".");
            delay(500);
            lcd.setCursor(8,1);
            lcd.print(".");
            delay(500);
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("Chequeando");
            lcd.setCursor(0,1);
            lcd.print("alarma");
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
            delay(200);
            digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            delay(200);
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("TODO OK!!!"); 
            delay(2000);
            lcd.clear();
            lcd.setCursor(3,0);
            lcd.print("BIENVENIDO"); 
            delay(2000);
            
            digitalWrite(16, HIGH);
            digitalWrite(17, HIGH);
            
  keypad.addEventListener(keypadEvent); 
}

void loop()
  {
  lcd.setCursor(0, 1);
  keypad.getKey();
}

//check the keypad events
void keypadEvent(KeypadEvent keyPress)
{
  switch (keypad.getState())
  {
    case PRESSED:
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.write("Ingresando...");
    switch (keyPress)
    {
	  case '#':    //Presionando # se desarma la alarma
             checkPassword();
          break;

          case '*':   //Presionado * se arma la alarma
            checkPassword2(); 
          break;             
 

          break;    
          
          default:
          password.append(keyPress);
         
     }
  }

  }




//check the entered password1

void checkPassword(){

  if (password.evaluate()) 

  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Password");
    lcd.setCursor(0,1);
    lcd.print("correcto");
    password.reset();
      delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Alarma");
    lcd.setCursor(0,1);
    lcd.print("desactivada");
        digitalWrite(17, HIGH);
    digitalWrite(15, LOW);
      delay (3000);
    lcd.clear();



 
      delay(5000);
    lcd.clear();
  }
  else
  {
    lcd.setCursor(0,0);
    lcd.print("Password");
    lcd.setCursor(0,1);
    lcd.print("incorrecto");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Reingrese Pass");
    password.reset(); 

  }
}




//check the entered password2

void checkPassword2(){
  if (password.evaluate()) 
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Password"); 
    lcd.setCursor(0,1);
    lcd.print("correcto");
 password.reset(); 
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
            lcd.print("Alarma");
            lcd.setCursor(0,1);
            lcd.print("activandose");
    delay (2000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("6");
    delay(1000);
    lcd.setCursor(0,0);
    lcd.print("5");
    delay(1000);
    lcd.setCursor(0,0);
    lcd.print("4");
    delay(1000);
    lcd.setCursor(0,0);
    lcd.print("3");
    delay(1000);
    lcd.setCursor(0,0);
    lcd.print("2");
    delay(1000);
    lcd.setCursor(0,0);
    lcd.print("1");
    delay(1000);
    
    lcd.clear();
    lcd.setCursor(0,0);
            lcd.print("Alarma");
            lcd.setCursor(0,1);
            lcd.print("activada");
        digitalWrite(15, HIGH); 
        digitalWrite(17, LOW);
        delay(4000);
        lcd.clear();
        lcd.setCursor(0,0);
            lcd.print("Vigilando...");
        
  }
 
  else
  {
    lcd.setCursor(0,0);
    lcd.print("Password"); 
    lcd.setCursor(0,1);
    lcd.print("incorrecto");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Reingrese pass");
    password.reset(); 

  }
}

Prueba algo así:

#include <Password.h>
#include <Keypad.h>
#include <LiquidCrystal.h>

Password password = Password ("123"); //Esta es la contraseña de armado y desarmado

LiquidCrystal lcd(14, 13, 12, 11, 10, 9);

const byte ROWS = 4;
const byte COLS = 3; 



char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte rowPins[ROWS] = {5, 4, 3, 2};
byte colPins[COLS] = {8, 7, 6};

// Create the Keypad

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

int estadoledarmado = 0; //Especificamos el estado inicial del led es 0(apagado)
int estadoleddesarmado = 1; //Especificamos el estado inicial del led es 1(encendido)
bool AlarmaArmada=false;

void setup()
{
  

  pinMode(15, OUTPUT); //Led armado
  pinMode(16, OUTPUT); //Led Estado de la alarma
  pinMode(17, OUTPUT); //Led desarmado

  
  lcd.begin(16, 2);
            lcd.setCursor(0,0);
            lcd.print("Iniciando");
            lcd.setCursor(0,1);
            lcd.print("alarma");
            delay(500);
            lcd.setCursor(6,1);
            lcd.print(".");
            delay(500);
            lcd.setCursor(7,1);
            lcd.print(".");
            delay(500);
            lcd.setCursor(8,1);
            lcd.print(".");
            delay(500);
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("Chequeando");
            lcd.setCursor(0,1);
            lcd.print("alarma");
            for (int i=0; i <= 12; i++)
            {
              delay(200);
              digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH);
              delay(200);
              digitalWrite(15, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW);
            }
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("TODO OK!!!"); 
            delay(2000);
            lcd.clear();
            lcd.setCursor(3,0);
            lcd.print("BIENVENIDO"); 
            delay(2000);
            
            digitalWrite(16, HIGH);
            digitalWrite(17, HIGH);
            
  keypad.addEventListener(keypadEvent); 
}

void loop()
  {
  lcd.setCursor(0, 1);
  keypad.getKey();
}

//check the keypad events
void keypadEvent(KeypadEvent keyPress)
{
  switch (keypad.getState())
  {
    case PRESSED:
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.write("Ingresando...");
    switch (keyPress)
    {
	  case '#':    //Presionando # se desarma la alarma
             checkPassword();
          break;

          case '*':   //Presionado * se arma la alarma
            checkPassword2(); 
          break;             
 

          break;    
          
          default:
          password.append(keyPress);
         
     }
  }

  }




//check the entered password1

void checkPassword(){

  if (password.evaluate()) 
  {
    if (!AlarmaArmada)
    {
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma");
      lcd.setCursor(0,1);
      lcd.print("ya desactiva");
      delay (3000);
      lcd.clear();
      delay(5000);
      lcd.clear();
    }
    else
    {
      AlarmaArmada=false;
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Password");
      lcd.setCursor(0,1);
      lcd.print("correcto");
      delay(1000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma");
      lcd.setCursor(0,1);
      lcd.print("desactivada");
      digitalWrite(17, HIGH);
      digitalWrite(15, LOW);
      delay (3000);
      lcd.clear();
      delay(5000);
      lcd.clear();
    }
  }
  else
  {
    lcd.setCursor(0,0);
    lcd.print("Password");
    lcd.setCursor(0,1);
    lcd.print("incorrecto");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Reingrese Pass"); 
  }
  password.reset();
}




//check the entered password2

void checkPassword2(){
  if (password.evaluate()) 
  {
    if (AlarmaArmada)
    {
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma");
      lcd.setCursor(0,1);
      lcd.print("Ya armada");
      delay (2000);
      lcd.clear();        // mensaje de alarma ya activada
      delay(4000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Vigilando...");
    }
    else
    {
      AlarmaArmada=true;                // Alarma armada
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Password"); 
      lcd.setCursor(0,1);
      lcd.print("correcto");
      delay(1000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma");
      lcd.setCursor(0,1);
      lcd.print("activandose");
      delay (2000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("6");
      delay(1000);
      lcd.setCursor(0,0);
      lcd.print("5");
      delay(1000);
      lcd.setCursor(0,0);
      lcd.print("4");
      delay(1000);
      lcd.setCursor(0,0);
      lcd.print("3");
      delay(1000);
      lcd.setCursor(0,0);
      lcd.print("2");
      delay(1000);
      lcd.setCursor(0,0);
      lcd.print("1");
      delay(1000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma");
      lcd.setCursor(0,1);
      lcd.print("activada");
      digitalWrite(15, HIGH); 
      digitalWrite(17, LOW);
      delay(4000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Vigilando...");
    }   
  }
  else
  {
    lcd.setCursor(0,0);
    lcd.print("Password"); 
    lcd.setCursor(0,1);
    lcd.print("incorrecto");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Reingrese pass");
  }
  password.reset();
}