problema con codigo

quiero que al poner la clave: “123456” e un teclado, el motor paso a paso gire hacia un lado, se detenga y gire hacia el otro lado. Y que tambien lo que ponga en el teclado se vea reflejado en una pantalla lcd.

es como poner una contraseña para activar el motor paso a paso.

Ahora, el problema: No funciona jajajaj, solo medio funciona el lcd y el teclado, estoy casi seguro que es un problema con el codigo.

Este es el codigo:

[code]

#include <Keypad.h>     // importa libreria Keypad

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27,2, 1, 0, 4, 5, 6, 7); //PUERTO DE: E, RW, RS, D4, D5, D6, D7
//SDA EN EL A4 AND SCL EN EL A5

const byte FILAS = 4;     // define numero de filas
const byte COLUMNAS = 4;    // define numero de columnas
char keys[FILAS][COLUMNAS] = {    // define la distribucion de teclas
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte pinesFilas[FILAS] = {9,8,7,6};   // pines correspondientes a las filas
byte pinesColumnas[COLUMNAS] = {5,4,3,2}; // pines correspondientes a las columnas

Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS);  // crea objeto

char TECLA;       // almacena la tecla presionada
char CLAVE[7];        // almacena en un array 6 digitos ingresados
char CLAVE_MAESTRA[7] = "123456";   // almacena en un array la contraseña maestra
byte INDICE = 0;      // indice del array
int RELE = 12;

int IN1 = 10;      // pin digital 8 de Arduino a IN1 de modulo controlador
int IN2 = 11;      // pin digital 9 de Arduino a IN2 de modulo controlador
int IN3 = 12;     // pin digital 10 de Arduino a IN3 de modulo controlador
int IN4 = 13;     // pin digital 11 de Arduino a IN4 de modulo controlador
int DEMORA = 20;      // demora entre pasos, no debe ser menor a 10 ms.
// medio paso
int paso [8][4] =   // matriz (array bidimensional) con la secuencia de pasos
{
  {1, 0, 0, 0},
  {1, 1, 0, 0},
  {0, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 0},
  {0, 0, 1, 1},
  {0, 0, 0, 1},
  {1, 0, 0, 1}
};
  
void setup()
{
 lcd.setBacklightPin(3, POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.begin(16, 2);  //columnas and filas
  lcd.clear();
   pinMode(IN1, OUTPUT);    // todos los pines como salida
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop(){
  TECLA = teclado.getKey();   // obtiene tecla presionada y asigna a variable
  if (TECLA)        // comprueba que se haya presionado una tecla
  {
    CLAVE[INDICE] = TECLA;    // almacena en array la tecla presionada
    INDICE++;   // incrementa indice en uno
    lcd.setCursor(0,0);
    lcd.print(TECLA);    // envia a monitor serial la tecla presionada
  

  if(INDICE == 6) {
    if(!strcmp(CLAVE, CLAVE_MAESTRA)){ 
       lcd.clear();
      lcd.setCursor (0,1);
 lcd.print("correcta");
   for (int i = 0; i <512; i++)
  {
   for (int i = 0; i <8; i++)
   {
    digitalWrite(IN1, paso[i][0]);  
  digitalWrite(IN2, paso[i][1]);
  digitalWrite(IN3, paso[i][2]);
  digitalWrite(IN4, paso[i][3]);
  delay(DEMORA);
   }
  
}
digitalWrite(IN1, LOW);  // PAUSA
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  delay(5000);
    }
     for (int i = 0; i <512; i++)
  {
   for (int i = 0; i <8; i--)
   {
    digitalWrite(IN1, paso[i][0]);  
  digitalWrite(IN2, paso[i][1]);
  digitalWrite(IN3, paso[i][2]);
  digitalWrite(IN4, paso[i][3]);
  delay(DEMORA);
   }
  }
  } else 
      lcd.setCursor (0,1);
       lcd.print("incorrecta");


    INDICE = 0;
  }
}

[code]