Non funziona lo sketch

salve a tutti
allora io sto programmando uno sketch che con una password attiva il relè. se la password è corretta fa lampeggiare un led sempre più velocemente e poi attiva il relè. o almeno dovrebbe... non riesco a capire dove sia l'errore mi potete aiutare? vi allego sotto lo sketch. grazie in anticipo

#include <Keypad.h>

// keypad configuration
const byte rows = 4;
const byte cols = 4;
char keys[rows][cols] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[rows] = {9, 8, 7, 6};
byte colPins[cols] = {5, 4, 3, 2};

char psw[7] = "123456";// PASSWORD
char inputCode[7];// numero cifre + 1
int rele = 15;// USCITA PER ATTIVARE IL RELE' A1
int buzz = 16;// A2
int LedO = 12;
int LedS = 13;
int LedW = 11;
int LedR = 14;//A0
int inputCode_idx;//CONTATORE PER DODICE INSERITO
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);

void setup(){
    Serial.begin(9600);
    keypad.setDebounceTime(150);
    pinMode(rele,OUTPUT);
    pinMode(buzz,OUTPUT);
    pinMode(LedO,OUTPUT);
    pinMode(LedS,OUTPUT);
    pinMode(LedR,OUTPUT);
    pinMode(LedW,OUTPUT);
    inputCode_idx = 0;// RESETTA IL CONTATORE DEL CODICE
}


void loop(){
  char key = keypad.getKey();
  //Serial.println(psw[1]);
  digitalWrite(LedO,HIGH);
  
  if(key !=NO_KEY){ 
    if(key== '#'){
      inputCode_idx = 0;// RESETTA IL CODICE
      Serial.println("CODICE RESETTATO");
      delay(1000);   
    }else{
      inputCode[inputCode_idx++] = key;
      Serial.print(key);
      if(inputCode_idx == 6){
        inputCode[inputCode_idx] = '\0';
        inputCode_idx = 0;
        Serial.println();
        Serial.println(inputCode);
        if(strcmp(inputCode,psw) != 0){
          digitalWrite(buzz,HIGH);
          digitalWrite(LedW,HIGH);
          delay(1000);
          digitalWrite(buzz,LOW);
          digitalWrite(LedW,LOW);
        }
      }

   
    }    
  }
      if(strcmp(inputCode,psw) == 0){
          digitalWrite(LedR,HIGH);
        delay(1000);
          digitalWrite(LedS,HIGH);
        delay(2000);
          digitalWrite(LedS,HIGH);
        delay(100);
          digitalWrite(LedS,HIGH);
        delay(1500);
          digitalWrite(LedS,HIGH);
        delay(100);
          digitalWrite(LedS,HIGH);
        delay(1000);
          digitalWrite(LedS,HIGH);
        delay(100);
          digitalWrite(LedS,HIGH);
        delay(500);
          digitalWrite(LedS,LOW);
          digitalWrite(rele,HIGH);
        Serial.println("APERTO");        
        delay(2000);
        Serial.println("CHIUSO");
          for(int i=0;i<6;i++){
            inputCode[i] = '\0';  
          }   
      }
      
      
  digitalWrite(rele,LOW);
  digitalWrite(LedR,LOW);
  
  
  
  
}

Nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ... Grazie.

Guglielmo

P.S.: Il tuo post è già stato spostato nell'opportuna sezione del forum "Italiano"

ok scusate

comunque sapreste rispondermi?

Io, per semplificare il debug, separerei in varie funzioni ...

... una prima funzione che si occupa solo della lettura della tastiera e ti ritorna true o false a secondo se la password digitata è giusta o meno un'altra che se la password è esatta (ovvero la funzione precedente ha ritornato true) si occupa di fare ciò che va fatto per la password corretta ed un'ultima per quello che si deve fare per password errata.

Questo ti permetterà di fare il debug separatamente di ogni singola cosa e di individuare molto più rapidamente il problema.

Poi, naturalmente, si può anche fare il debug di ciò che hai scritto ...
... per farlo dovrai mettere nei vari punti critici varie Serial.print() che ti permetteranno di capire esattamente dove il codice sta passando e cosa sti facendo.

Guglielmo