Dificuldade em algoritimo para controle de acesso.

Olá, sou novo em programação em C.

Estou com dificuldades com meu SKETCH, a ideia é fazer um controle de acesso.
O projeto tem como entrada de dados um teclado matricial e um motor de passo como atuador.

Resumindo estou preso no primeiro FOR sei onde esta o erro mais não sei como corrigir, não tenho expertise ainda.

#include<Stepper.h>
#include <Keypad.h>

const int stepsPerRevolution=64;

Stepper myStepper(stepsPerRevolution, 8,10,9,11);

byte pinosLinhas[]  = {2,3,4,5};

byte pinosColunas[] = {6,7,12,13};

char teclas[4][4] = {{'1','2','3','A'},
                     {'4','5','6','B'},
                     {'7','8','9','C'},
                     {'*','0','#','D'}};

Keypad teclado1 = Keypad( makeKeymap(teclas), pinosLinhas, pinosColunas, 4, 4);  

char Senha[4]={'1','9','7','1'};
char Senha_digitada={""};
int Led_vermelho= A1;
int Led_verde=A0;

void setup(){
  Serial.begin(9600);
  myStepper.setSpeed(350);
  Serial.println("Digite a senha de 4 digitos");
  Serial.println();
  pinMode(Led_vermelho,OUTPUT);
  pinMode(Led_verde,OUTPUT);
}

void loop(){
  Serial.println("Entrando no For");
  for (int x=0; x<4 ;x++){
    strcat(Senha_digitada,teclado1.getKey());
    
  }

  Serial.println("Entrando no If");
  if (strcmp(Senha_digitada,Senha)==0){
    Serial.println("Senha correta");
    analogWrite(Led_verde,HIGH);
    myStepper.step(9999);
    delay(1000);
    myStepper.step(-9999);
    analogWrite(Led_verde,LOW);
    Senha_digitada="";
  }
  
  else{
  Serial.println("Entrou no Else");
    Serial.println("senha incorreta");
    analogWrite(Led_vermelho,HIGH);
    delay(5000);
    analogWrite(Led_vermelho,LOW);
    Senha_digitada=("");
  }
}

Por que não faz como está no exemplo da biblioteca em Arduino Playground - EventKeypad
retire o for
(...)
char key = keypad.getKey();
if (key) {
strcat(Senha_digitada,key);
}

if ( Senha_digitada.length = 4 ) {
Serial.println("Entrando no If");
if (strcmp(Senha_digitada,Senha)==0){
(...)

Boas

void loop(){
  Serial.println("Entrando no For");
  for (int x=0; x<4 ;x++){
    strcat(Senha_digitada,teclado1.getKey());
   
  }

char getKey()
Returns the key that is pressed, if any. This function is non-blocking.

No teu loop este for irá dificilmente apanhar o momemto em que tu primiste a tecla.Como a documentaçao indica ela é non-blocking o que significa que nao vai ficar a espera ate receber uma tecla valida, vai simplemente continuar.Assim o que estara dentro da variavel Senha_digitada nao tera o que tu estas a espera
Tens de criar algo que fique bloqueado a espera dos digitos ou que valide o digito, se é ou nao valido.

...

char key = keypad.getKey();
 if (key!= NO_KEY) {//Validas a tecla aqui
 //Agora é seguro fazeres o strcat pois sabes que a tecla é valida
   strcat(Senha_digitada,key);
 }
 if ( strlen(char Senha_digitada) == 4 ) { 
 Serial.println("Entrando no If");
 if (strcmp(Senha_digitada,Senha)==0){
(...)

Nota que o método length que tu usas só existe na Class String e tu tens apenas um string (array de caracteres)!