Stepper motor e lcd i2c

Buonasera a tutti,
Premetto che ho scarse conoscenze di elettronica e programmazione, ma è da un po che mi cimento.
Sto cercando di far funzionare un motore passo passo, con annesso LCD per mostrare a video la velocità.
Il tutto è controllato da Arduino Uno, con drv8825 per il motore ed un LCD con interfaccia i2c.
Fino a che testo il motore o lo schermo separatamente tutto funziona alla perfezione, ma quando i due devono lavorare insieme il motore smette di girare. Non se possa essere un problema di corrente o di software… Il motore è un NEMA 17 con assorbimento di 1.5A per fase, lo schermo LCD è un 16x2 retroilluminato. Arduino è alimentato con un alimentatore da 12V e max 2A, per cui credo sia sufficiente(?).

Di seguito lo sketch di prova in cui il motore smette di girare:

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

// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MOTOR_STEPS 200

// All the wires needed for full functionality
#define DIR A5
#define STEP A4
//Uncomment line to use enable/disable functionality
//#define ENBL 7;

// Since microstepping is set externally, make sure this matches the selected mode
// 1=full step, 2=half step etc.
#define MICROSTEPS 32

// 2-wire basic config, microstepping is hardwired on the driver
Stepper myStepper(MOTOR_STEPS, DIR, STEP);

//Uncomment line to use enable/disable functionality
//BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, ENBL);

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {

  lcd.init(); // inizializza LCD
  lcd.backlight();

  pinMode (A1, OUTPUT);//E0
  pinMode (A2, OUTPUT);//E1
  pinMode (A3, OUTPUT);//E2

  digitalWrite(A1, LOW);
  digitalWrite(A2, LOW);
  digitalWrite(A3, LOW);

  myStepper.setSpeed(400);
}

void loop() {

  lcd.setBacklight(1);
  lcd.clear();
  lcd.setCursor(0,0), lcd.print("avanti");

  myStepper.step(1200);  

  delay(750);
  
  lcd.clear();
  lcd.setCursor(0,0), lcd.print("indietro");

  myStepper.step(1200);

  delay(1500);

}

Ho provato a caricare lo stesso sketch ma lasciando l’LCD staccato, e lo stepper non gira comunque; per cui sono più propenso a credere sia un problema di software.
Altra prova che ho fatto è caricare lo sketch di prova del solo LCD ma mantenendo alimentato il motore, e ho notato che questo da qualche scattino random.

Questi sono i due codici di prova:

Stepper

#include <Arduino.h>
#include "BasicStepperDriver.h"

// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MOTOR_STEPS 200

// All the wires needed for full functionality
#define DIR A5
#define STEP A4
//Uncomment line to use enable/disable functionality
//#define ENBL 7;

// Since microstepping is set externally, make sure this matches the selected mode
// 1=full step, 2=half step etc.
#define MICROSTEPS 32

// 2-wire basic config, microstepping is hardwired on the driver
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);

//Uncomment line to use enable/disable functionality
//BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, ENBL);

void setup() {
  /*
     Set target motor RPM.
     These motors can do up to about 200rpm.
     Too high will result in a high pitched whine and the motor does not move.
  */

  pinMode (A1, OUTPUT);//E0
  pinMode (A2, OUTPUT);//E1
  pinMode (A3, OUTPUT);//E2

  digitalWrite(A1, HIGH);
  digitalWrite(A2, HIGH);
  digitalWrite(A3, HIGH);
}

void loop() {

  // energize coils - the motor will hold position
  //stepper.enable();

  /*
     Tell the driver the microstep level we selected.
     If mismatched, the motor will move at a different RPM than chosen.
  */
  stepper.setMicrostep(MICROSTEPS);

  /*
     Moving motor one full revolution using the degree notation
  */
  stepper.setRPM(200);
  stepper.rotate(360);

  delay(2000);
  /*
     Moving motor to original position using steps
  */
  stepper.setRPM(120);
  int n = 200 * MICROSTEPS;
  for (int p = 0; p < n; p++) stepper.move(-1);

  // pause and allow the motor to be moved by hand
  // stepper.disable();

  delay(2000);

}

LCD

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

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.

}

void loop()
{ 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("la frase piu lunga do mundo ");
  lcd.autoscroll();
  delay(1000);
}

Grazie in anticipo per l’aiuto!

#define DIR A5
#define STEP A4

Guarda che A4 e A5, su un Arduino UNO sono i segnale I2C ( SDA, SCL) .
Il fatto che siano anche vicino al pin AREf puo' confondere, infatti sono gli stessi pin

Ahh ecco, questo chiarisce molto le cose... Grazie mille!!!