ERROR EN CODIGO, AYUDA URGENTE

hola, tengo un error en el codigo en la parte de volver a ingresar contraseña cuando es incorrecta, es como si no tomara el teclado matricial a pesar de invocar a la subrutinas

#include <LiquidCrystal.h>
LiquidCrystal perro ( A3, 9, 10, 11, 12, 13);

int var[4][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {55, 0, 66}};
int x = 0, c = 0, j, i,f,q, c2=0, xy=0;
int a1 = 0, b1 = 0, c1 = 0, d1 = 0;
int a2 = 0, b2 = 0, cc2 = 0, d2 = 0;
int xm = 1234;
int intentos = 0, R;
signed int temp, lec;

// pines del teclado matricial: 2, 3, 4, 5, 6, 7, 8
// pines de led indicadores: A0, A1
// pines sensor de temperatura: A2
// pines del lcd 16x2: A3, 9, 10, 11, 12, 13

void setup()
{

Serial.begin(9600); // inicializar monitor serial

perro.begin (16, 2); //inicializar lcd?? XD

Serial.println (“ingrese clave de 4 digitos”);

perro.print (“ingrese su clave”);
perro.setCursor (1,2);
perro.print (“de 4 digitos”);

for (q = 0; q <= 3; q++) {
pinMode (q + 5, INPUT);
}

for (f = 0; f <= 2; f++) {
pinMode (f + 2, OUTPUT);
}

}

void tecla() { //sub rutina

for ( i = 0; i <= 2; i++) {// for global
digitalWrite(i + 2, HIGH);

for (j = 0; j <= 3; j++) { //for interno
if (digitalRead(j + 5) == HIGH) {
c++;
delay (350);
cuenta(c);

}

}
digitalWrite(i + 2, LOW);
}
}

void cuenta (int p) {

if (p == 1) {
a1 = var[j];

  • Serial.print(a1);*
  • } else if (p == 2) {*
    _ b1 = var[j];_
    * Serial.print(b1);*
    * } else if (p == 3) {*
    _ c1 = var[j];
    * Serial.print(c1);
    } else if (p == 4) {
    d1 = var[j];
    Serial.println(d1);
    x = a1 * 1000 + b1 * 100 + c1 * 10 + d1 * 1;
    if (x == xm) { //comparacion con la clave*

    * perro.begin (16, 2);
    perro.print (“clave correcta”);*_

* Serial.println(“clave correcta”);*
* delay (1000);*
* perro.begin(16,2);*

* } else {*

* do {*
* perro.begin (16,2);*
* perro.print (“clave incorrecta”);*
* delay (750);*
* perro.begin (16,2);*
* perro.print (“ingrese su clave”);*
* perro.setCursor (1,2);*
* perro.print(“nuevamente”);*
* Serial.println (“clave incorrecta, ingrese nuevamente”);*

* delay(500);*
* tecla();*
* delay(500);*
* cuenta(p);*

* }while ((x==xm) && (intentos<=3));*

* }*
* }*
}
void loop() {

* tecla();*

}

Hola y bienvenido al foro.

Te recomiendo que te leas las NORMAS para que aprendas a postear correctamente código, imagenes, enlaces, errores, etc.

En tu caso también editar el título del post con algo que referencie tu problema, todo lo que incluya "ayuda" sin especificar nada más, es un poco feo, imagina el foro lleno de "ayuda", "ayuda".... y menos poniendo "urgente".