Bug extraño al hacer un digitalRead al mover motor paso a paso

Buenas,
Tengo un problema un poco raro.
Tengo un código que mueve un stepper perfectamente, pero a la que hago un digitalRead deja de funcionar y no se mueve. Lo curioso es que si hago un analogRead funciona sin problema, pero a la que añado un digitalRead(Pin) en cualquier parte del código deja de funcionar, incluso en el setup.
He probado a leer todos los pins, guardando en una variable, al final del código etc, y no se mueve en ningún caso.
El código compila sin problema y las lecturas son correctas, pero el stepper no se mueve, y que con el analogRead funcione me hace ver claro que es algún bug. ¿Alguna idea?

Mil gracias!!

Os dejo el código por si sirve de algo, pero ya os digo que funciona perfectamente.

#define VELOCIDAD 950
int steps = 2;
int direccion = 3;
int reset = 9;
int sleep = 10;
int enable = 11;
int pasos = 650;

void setup() {

pinMode(steps, OUTPUT);
pinMode(reset, OUTPUT);
pinMode(pasos, OUTPUT);
pinMode(direccion, OUTPUT);
pinMode(sleep, OUTPUT);
pinMode(enable, OUTPUT);
digitalWrite(reset, LOW);
digitalWrite(reset, HIGH);
pinMode(5, INPUT);
Serial.begin(9600); //para los printl
}

void loop() {
digitalWrite(reset, LOW);
digitalWrite(reset, HIGH);

//Serial.print(value);
Serial.print("\n\r");
Serial.print(sleep);
Serial.print("\n\r");

int x = digitalRead(5); //Si quito esta linea funciona perfectamente
int y = analogRead(5); //Funciona sin problema con o sin esta línea

digitalWrite(direccion, LOW);

for (int i = 0; i<pasos; i++)
{
digitalWrite(steps, HIGH);
digitalWrite(steps, LOW);
delayMicroseconds(VELOCIDAD);
}
digitalWrite(sleep, LOW);
delay(2000);
digitalWrite(sleep, HIGH);

digitalWrite(direccion, HIGH);

for (int i = 0; i<pasos; i++)
{
digitalWrite(steps, HIGH);
digitalWrite(steps, LOW);
delayMicroseconds(VELOCIDAD);
}
digitalWrite(sleep, LOW);
delay(2000);
digitalWrite(sleep, HIGH);

}

Bueno ya lo he resuelto. Resulta que al poner el digitalWrite el pin enable, el 11, se inicializa en HIGH, y tengo que poner digitalWrite(enable, LOW) al inicio del código. En cambio si no hago ningún digitalWrite, independientemente de en que pin, parece que por defecto la salida del pin 11 es LOW, ni puñetera idea de porque