CNC shield V3 A4988 Motors Z and A not move

my project need 4 motors. I use Arduino Uno, CNC shield V3 and A4988 drivers to move DVD small motors.
Motors connected to X and Y is mover OK, when i replaced (after power Off) with motors and drivers the hardware work fine, but Z and A motors not move. Probably problem is a code or need any additional driver?
the code:

// The following is a simple stepper motor control procedures
# define EN 8 // stepper motor enable , active low
# define ENZ 1 // stepper motor enable , active low
# define X_DIR 5 // X -axis stepper motor direction control
# define Y_DIR 6 // y -axis stepper motor direction control
# define Z_DIR 7 // z axis stepper motor direction control
# define A_DIR 12 // A axis stepper motor direction control
# define X_STP 2 // x -axis stepper control
# define Y_STP 3 // y -axis stepper control
# define Z_STP 4 // z -axis stepper control
# define A_STP 13 // z -axis stepper control

//// *
/// / Function : step . function: to control the direction of the stepper motor , the number of steps .
/// / Parameters : dir direction control , dirPin corresponding stepper motor DIR pin , stepperPin corresponding stepper motor " step " pin , Step number of step of no return value.
////
int N = 1;
int delayUs = 800;
int steps = 100;

void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
 digitalWrite (dirPin, dir);
 delay (50);
 for (int i = 0; i < steps; i ++)
 {
   digitalWrite (stepperPin, HIGH);
   delayMicroseconds (delayUs);
   digitalWrite (stepperPin, LOW);
   delayMicroseconds (delayUs);
 }
}

void setup () {   // The stepper motor used in the IO pin is set to output
 pinMode (X_DIR, OUTPUT); 
 pinMode (X_STP, OUTPUT);
 pinMode (Y_DIR, OUTPUT); 
 pinMode (Y_STP, OUTPUT);
 pinMode (Z_DIR, OUTPUT); 
 pinMode (Z_STP, OUTPUT);
 pinMode (A_DIR, OUTPUT); 
 pinMode (A_STP, OUTPUT);
 pinMode (EN, OUTPUT);
 digitalWrite (EN, LOW);
 pinMode (ENZ, OUTPUT);
 digitalWrite (ENZ, LOW);
 Serial.begin(115200);
 Serial.println("Start1");
 Serial.println("serial delimit test 1.0");
 Serial.println("Start");
}

void loop () {
 Serial.println("reverse-" + String(N));
 step (false, X_DIR, X_STP, steps); // X axis motor reverse 1 ring, the 200 step is a circle.
 step (false, Y_DIR, Y_STP, steps); // y axis motor reverse 1 ring, the 200 step is a circle.
 step (false, Z_DIR, Z_STP, steps); // z axis motor reverse 1 ring, the 200 step is a circle.
 step (false, A_DIR, A_STP, steps); // a axis motor reverse 1 ring, the 200 step is a circle.
 delay (500);
 Serial.println("forward-" + String(N));
 step (true, X_DIR, X_STP, steps); // X axis motor forward 1 laps, the 200 step is a circle.
 step (true, Y_DIR, Y_STP, steps); // y axis motor forward 1 laps, the 200 step is a circle.
 step (true, Z_DIR, Z_STP, steps); // z axis motor forward 1 laps, the 200 step is a circle.
 step (true, A_DIR, A_STP, steps); // a axis motor forward 1 laps, the 200 step is a circle.
 delay (500);
 N++;

}
# define ENZ 1 // stepper motor enable , active low

Pin 1 is the hardware serial TX pin. That could cause problems.
If you are not using the analog inputs, they can be use as digital pins (they actually are digital pins with analogRead as a special function).

groundFungus:

# define ENZ 1 // stepper motor enable , active low

Pin 1 is the hardware serial TX pin. That could cause problems.
If you are not using the analog inputs, they can be use as digital pins (they actually are digital pins with analogRead as a special function).

i try with a w/o this line, not moved a and z. thanks.

How are you enabling the Z and A drivers now? I would just change the pin number in the define.

# define ENZ 14

That uses pin 14 (A0) for the enable. That is all that you need do. You need to make sure that the stepper drivers are enabled, anyway. If you have a meter, check the voltage at the enable pins to make sure it's LOW. If you don't have a meter, use an LED and resistor for an indicator.

groundFungus:
How are you enabling the Z and A drivers now? I would just change the pin number in the define.

# define ENZ 14

That uses pin 14 (A0) for the enable. That is all that you need do.

Changed to ENZ to 14, but not helps.
I found that A in that shield works as clone, that mean I can work with only 3 motors??? But CNC need minimum 3 motors? XYZ and shpindel.

The spindle motor is not a stepper. It is a high speed DC motor controlled (optionally) by PWM.
I had a look at the CNC shield and there is only 1 enable pin for all of the steppers [pin 8].

Maybe I can rebuild CNC for 4 stepper motors? It's not arduino u no limitation?

This page mentions using a 4th stepper (A) using pins 12 and 13 for step and dir and shows how to set the jumpers for that option.

I fix the problems.

  1. axe Z had short between pins, manufacturer failure. After fix, works OK.
  2. Axe A can be used as separated motor, need add jumpers ( thanks groundFungus).
    the code after small fix:
# define EN 8 // stepper motor enable , active low

# define X_DIR 5 // X -axis stepper motor direction control
# define Y_DIR 6 // y -axis stepper motor direction control
# define Z_DIR 7 // z axis stepper motor direction control

# define X_STP 2 // x -axis stepper control
# define Y_STP 3 // y -axis stepper control
# define Z_STP 4 // z -axis stepper control
# define A_STP 12 // A -axis stepper control
# define A_DIR 13 // A axis stepper motor direction control

//// *
/// / Function : step . function: to control the direction of the stepper motor , the number of steps .
/// / Parameters : dir direction control , dirPin corresponding stepper motor DIR pin , stepperPin corresponding stepper motor " step " pin , Step number of step of no return value.
////
int N = 1;
int delayUs = 1000;
int steps = 200;

void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
  digitalWrite (dirPin, dir);
  delay (50);
  for (int i = 0; i < steps; i ++)
  {
    digitalWrite (stepperPin, HIGH);
    delayMicroseconds (delayUs);
    digitalWrite (stepperPin, LOW);
    delayMicroseconds (delayUs);
  }
}

void setup () {   // The stepper motor used in the IO pin is set to output
  pinMode (X_DIR, OUTPUT);
  pinMode (X_STP, OUTPUT);
  pinMode (Y_DIR, OUTPUT);
  pinMode (Y_STP, OUTPUT);
  pinMode (Z_DIR, OUTPUT);
  pinMode (Z_STP, OUTPUT);
  pinMode (A_DIR, OUTPUT);
  pinMode (A_STP, OUTPUT);
  pinMode (EN, OUTPUT);
  digitalWrite (EN, LOW);
  Serial.begin(115200);
  Serial.println("Start1");
  Serial.println("serial delimit test 1.0");
  Serial.println("Start");
}

void loop () {
  Serial.println("reverse-" + String(N));
  step (false, X_DIR, X_STP, steps); // X axis motor reverse 1 ring, the 200 step is a circle.
  step (false, Y_DIR, Y_STP, steps); // y axis motor reverse 1 ring, the 200 step is a circle.
  step (false, Z_DIR, Z_STP, steps); // z axis motor reverse 1 ring, the 200 step is a circle.
  step (false, A_DIR, A_STP, steps); // a axis motor reverse 1 ring, the 200 step is a circle.
  delay (500);
  Serial.println("forward-" + String(N));
  step (true, X_DIR, X_STP, steps); // X axis motor forward 1 laps, the 200 step is a circle.
  step (true, Y_DIR, Y_STP, steps); // y axis motor forward 1 laps, the 200 step is a circle.
  step (true, Z_DIR, Z_STP, steps); // z axis motor forward 1 laps, the 200 step is a circle.
  step (true, A_DIR, A_STP, steps); // a axis motor forward 1 laps, the 200 step is a circle.
  delay (500);
  N++;

}

Hi, I'm new to all of this. But I am having the same issue with the A axis. The website only shows me this
which isn't really helpful. Could someone show me the correct jumper settings?

Jumper the pins as shown, then use pin 12 for step for A axis and pin 13 for dir of A axis.

clone A axis.jpg