Duda, push buttom o keypad.

Buenos días gente del foro, me encuentro en un aprieto al intentar programar un arduino mega para apagar un pulso por el pin 5, la idea es desactivar ese pin ya sea introducir una contraseña válida o pulsando un botón. Todo me funcionaba bien, antes de introducir el código para el botón, ahora para que me reconozca el botón, necesito introducir una contraseña valida o inválida, enseguida dejar presionado el botón y cuando el loop termina su vuelva e inicia de nuevo lee que el estado del botón, si esta presionado me desactiva el pin 5. Solo en ese caso (o cuando recién inicia el arduino) lee la posición del push buttom.
Esa parte del codigo lo tengo en un while, la idea es mantener el arduino listo para que detecte si se presiona el push buttom o una tecla del keypad y actuar según el caso.

El código es extenso y solo en esta parte es donde tengo la confusión. Desde ya, gracias por su tiempo.

void loop()
{  
  change = 1;
  int g=0,j=0,f=0,w=0,k=0, i = 0;
  estadoactual = digitalRead(6);

    while (change == 1)
    {
      lcd.setCursor(0,0);
      lcd.print("SISTEMABLOQUEADO");
      lcd.setCursor(4,1);
      estadoactual = digitalRead(6);      
      
      //Inicio de boton
      if (estadoanterior != estadoactual)
        {
          lcd.clear();
          delay(50);
          lcd.setCursor(4,0);
          lcd.print("Puerta");
          lcd.setCursor(5,1);
          lcd.print("Abierta");
          digitalWrite(puerta, LOW);
          delay(5000);
          lcd.clear();
          estadoanterior = estadoactual;
          estadoactual = digitalRead(6);
          digitalWrite(puerta,HIGH);
         }//Fin de boton
      
          for(g=1;g<=6;g++)
          {
            pss1[g] = kpd.waitForKey();
            tone(buz, 3500);
            lcd.print("*");
            delay(200);
            noTone(buz);
            
            if (g == 6)
             {
               change = 2;
              } 

          }//cierra ciclo for de captura de pass
        
    }//Se cierra el while