void loop() { // run over and over
    keypad();
}
void keypad(){
   // Send base information and password request 
    mySerial.write(88);
Je ti jasné, že to 88 posíláš ve smyčce pořád dokola? Ta odpověď nestihne přijít včas na to, aby ten následující if hned něco provedl. Takže se zamysli nad časováním.
    
    if (mySerial.available() > 0){
      int status=mySerial.read();
      if (status==1){
        while (mySerial.available() > 0){
Tady počítáš s tím, že ten přenos bude dost rychlý na to, aby celé heslo bylo v paměti dřív, než proběhne ten tvůj while. No a ono nebude. Pošli si nejdřív délku, ať víš kolik znaků čekat. available() ti jenom řekne, jestli čekají přijatá data v bufferu.
         int intByte= mySerial.read();
         password+=(int)intByte; 
Plus? Cože si to posíláš? Co je password? String? Takhle se totiž stringy v C nespojují..
Klavesnice:
void loop() { // run over and over
   called=mySerial.read();        
    if (called==ID){   
     serialInterrupt();
    }               
Serial.println(armState);
}
A co když to ID nesedí? To je pak zpráva pro někoho jiného a měl bys ji celou ignorovat než zase začneš čekat na ID. Další důvod proč posílat i délku.
void serialInterrupt(){
      mySerial.write(1);
      mySerial.write(passwd);
      if (mySerial.available() > 0){
         armState = mySerial.read();    
      }
Zase available(). Ono to opravdu udělá něco jiného než čekáš. Tady by asi mělo být spíš while(!mySerial.available());
      if (mySerial.available() > 0){
         passwordState = mySerial.read();    
      } 
A tady taky.          
Problem je ze v kodu klavesnice dostavam do promennych "armstate" nebo "passwordState" hodnotu 88, tedy oznaceni startu komunikace s pozadovanou klavesnici. 
Tomu se vůbec nedivím. To Arduino běží na 16Mhz, TTL UART je tam typicky nastavený na 115200 baud (nebo dokonce jen 9600), tj nepočítej s tím, že ti přijde odpověď hned v čase pro další instrukci. Synchronizaci ti musí dělat ty zprávy a to Arduino na ně musí počkat. Druhá věc je to, že posíláš výzvu 88 pořád dokola místo čekání na odpověď a neznáš délku odpovědi, abys rozhodl, že už ji máš celou.