Problemas com motor de passo e lcd

Pessoal tenho um codigo onde eu controlo o movimento de um motor de passo usando a lib AccelStepper mostro algumas informacoes no display 16x2 usando a lib LiquidCrystal_I2C.

Acontece que se eu coloca a lib do lcd o motor de passo fica extremamente lento, quase nao roda.
Basta tirar os codigos do lcd, por menor que sejam e tudo volta ao normal.

Alguem tem alguma dica sobre este problema.

Valeu

Muito provavelmente o codigo do LCD tem delays... e deves estar a usar o delay demasiadamente...

Se meteres o codigo sera bem mais facil de perceber o problema.

Segue o codigo abaixo. Olhem no ponto onde esta escrito "Logica para movimentar o carro esquerda ou direita"

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

AccelStepper motor(1,11,10);
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);

int led=13; // led no pino 13
int sensorFoto=8; // simulando o sensor - trocar
int sensorCentro=12; // sensor do centro do carro
int btnAuto=7; // sistema em manual ou auto
int btnCentro=4; // botao para centralizar carro
int btnEsquerda=6; // botao do movimento esquerdo
int btnDireita=5; // botao do movimento direito
int liberaMotor=9; // coloca o motor em standby
int btnInverte=3; // botao para inverter o sentido

// variaveis do sistema do feixe
int var=0;
int var2=0;
int estado=0;
int LigaMotor = 1;
int fnManual=0;

//Variaveis do Automatico
int varAuto = 0;
int varAuto2 = 0;
int estadoAuto = 0;

//Variaveis da inversao do sentido
int sentH = 0;
int sentAH = 0;
int varInv = 0;
int varInv2 = 0;
int estadoInv = 0;

void setup()
{
lcd.begin(16,2);
lcd.backlight();
LigaMotor = 1;
fnManual = 0;

pinMode(led,OUTPUT);
pinMode(sensorFoto,INPUT);
pinMode(sensorCentro,INPUT);
pinMode(btnCentro,INPUT);
pinMode(btnAuto,INPUT);
pinMode(btnEsquerda,INPUT);
pinMode(btnDireita,INPUT);
pinMode(btnInverte,INPUT);
pinMode(liberaMotor,OUTPUT);
digitalWrite(btnAuto,LOW);

motor.setMaxSpeed(8000);
motor.setSpeed(8000);
motor.setMinPulseWidth(100);
motor.setCurrentPosition(0);

lcd.setCursor(0,0);
lcd.print("Alinhador Eletronico");
}
void loop()
{

int varEsq = digitalRead(btnEsquerda);
int varDir = digitalRead(btnDireita);

int vStatus = SensorFeixe();
if (LigaMotor == 1){ // coloca o motor em automatico
if (vStatus == 1){

motor.move(1000);
motor.setSpeed(sentH); // Velo padrao = 8000
motor.runSpeed(); // Ver funcao InverterSentido

}else if (vStatus == 0){

motor.move(1000);
motor.setSpeed(sentAH); // Velo padrao = -8000
motor.runSpeed(); // Ver funcao InverterSentido
}
}

//logica para movimentar o carro esquerda e direita
if (LigaMotor == 0){
if (varEsq == 0){ //botao esquerdo acionado
fnManual = 1;
lcd.setCursor(0,1);
lcd.print("Mover Esquerda");
digitalWrite(liberaMotor,LOW);
motor.move(1000);
motor.setSpeed(1000);
motor.runSpeed();

}
if (varDir == 0){ // botao direito acionado
fnManual = 1;
lcd.setCursor(0,1);
lcd.print("Mover Direita");
digitalWrite(liberaMotor,LOW);
motor.move(1000);
motor.setSpeed(-1000);
motor.runSpeed();

}
}
//verifica se os botoes esquerda e direita nao estao precionados
if ((varEsq == 0) && (varDir == 0)){
fnManual = 0;
}

MotorManual();
InverterSentido();
}

int SensorFeixe(){
var=digitalRead(sensorFoto); // ler o valor enviado Sensor De Feixe
if ((var == HIGH) && (var2 == LOW)) {
estado = 1 - estado;
delay(20); // de-bouncing
}
var2=var;
if (estado == 1) { // caso esteja no material roda esquerda
return 1;
} else {
return 0; // caso nao esteja no material roda direita
}
}
void MotorManual(){ // funcao que coloca o motor em manual

varAuto = digitalRead(btnAuto);
if ((varAuto == HIGH) && (varAuto2 == LOW)){
estadoAuto = 1 - estadoAuto;
delay(20);
}
varAuto2 = varAuto;
if (estadoAuto == 0){
LigaMotor = 1; //sistema ligado em auto
digitalWrite(liberaMotor,LOW);

}else{
LigaMotor = 0; //sistema em manual
if (fnManual == 0){
digitalWrite(liberaMotor,HIGH);

}
}
}
void InverterSentido(){
varInv = digitalRead(btnInverte);
if ((varInv == HIGH) && (varInv2 == LOW)){
estadoInv = 1 - estadoInv;
delay(20);
}
varInv2 = varInv;
if (estadoInv == 0){
sentH = 8000;
sentAH = -8000;
}else{
sentH = -8000;
sentAH = 8000;
}
}