Ayuda con motor pap y A4988

Hola, estoy empezando a prender a manejar los motores pap con arduino y tengo un problema con el pinDir a la hora de programar.
Mi motor es unipolar/bipolar, bueno creo… es de 5 hilos (amarillo y azul, bobina1, naranja y negro bobina 2 y blanco a 12 v). Adjunto la imagen de como lo tengo conectado al A4988.
Bien una vez conectado cargo este código que encontré en la web para testear. Y funciona.

int dirPin = 2;
int stepPin = 3;
int stepTimeUs = 1000;
int dir = 0;

void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
Serial.begin(9600);
}

void runSteps(int count) {
if (Serial.available()) {
stepTimeUs = Serial.parseInt();
}
digitalWrite(dirPin, dir);
for(int i = 0; i < count; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(stepTimeUs / 2);
digitalWrite(stepPin, LOW);
delayMicroseconds(stepTimeUs / 2);
}
}

void loop() {
dir = !dir;
runSteps(1000);
delay(500);
}

Ahora quiero controlarlo con 2 pulsadores (derecha, izquierda) y con mis aun escasos conocimientos escribo este código.

int dirPin = 2;
int stepPin = 3;
int der = 4;
int izq = 5;

void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(der, INPUT);
pinMode(izq, INPUT);

}

void loop() {
digitalWrite(dirPin, LOW);
digitalWrite(stepPin, LOW);

boolean derecha = 0;
boolean izquierda = 0;

derecha = digitalRead(der);
izquierda = digitalRead(izq);

if (derecha==1)
{
izquierda=0;
digitalWrite(dirPin, LOW);
digitalWrite(stepPin, HIGH);
}

if (izquierda==1)
{
derecha=0;
digitalWrite(dirPin, HIGH);
digitalWrite(stepPin, HIGH);
}
}

El tema es que en un primer momento me funcionó… Pero ya no se que cambié y ahora cuando pulso derecha o izquierda se olle un zumbido y tiembla muy flojo…
Alguien que me explique en que falla el código???
Gracias de antemano y perdón por mi ineptitud.

Edito: La imagen de frizting no está completa, físicamente tengo conectado tambien un condensador de 100mf en la linea de la fuente de 12v y he puenteado los pines reset y MS1 a 5v. Pero bueno en definitiva la imagen es para tener una idea de mi circuito, el problema está en el código… creo.

Vale, en vista de que nadie contesta, me contesto yo mismo por si alguien tuvo la misma duda.
Al final conseguí lo que quería modificando el código de prueba del principio, condicionando la variable runSteps con respecto a los pulsadores…
La verdad que al final me queda la duda de porque el otro código me funcionó en el primer intento y despues ya no…

Bueno ay va el código modificado.

int dirPin = 2;
int stepPin = 3;
int stepTimeUs = 100;
int der = 4;
int izq = 5;
int dir = 0;

void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(der, INPUT);
pinMode(izq, INPUT);
Serial.begin(9600);
}

void runSteps(int count) {
if (Serial.available()) {
stepTimeUs = Serial.parseInt();
}
digitalWrite(dirPin, dir);
for(int i = 0; i < count; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(stepTimeUs /2);
digitalWrite(stepPin, LOW);
delayMicroseconds(stepTimeUs /2);
}
}

void loop()
if (digitalRead(der)==HIGH){
dir=0;
runSteps(1);
}
if (digitalRead(izq)==HIGH){
dir=1;
runSteps(1);
}
}

Quizás nadie te contestaba porque pones la pregunta donde no corresponde, no pones el código como corresponde... Tenia que ir en Software.