Zoetrope, motorino gira solo in una direzione...

Ciao a tutti, ho scritto nella sezione starter kit ma visto che nessuno mi risponde provo a chiedere anche qui xP, Ho n piccolo problema con il progetto 10 dello starter kit, ho un bottone che deve abilitare e disabilitare il motore e questo funziona, un potenziometro che deve regolare la velocità del motore e questo funziona ma ho un problema con il pulsante che dovrebbe cambiare la direzione del motorino, se premo il pulsante in una direzione gira nell’altra si ferma e non fa nulla.
Vi posto il codice cosi capite un pò meglio:

const int controlPin1=2;
const int controlPin2 = 3;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStatePin = 5;
const int potPin = A0;

int onOffSwitchState=0;
int previousOnOffSwitchState=0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;

int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;

void setup()
{
  pinMode(directionSwitchPin,INPUT);
  pinMode(onOffSwitchStatePin,INPUT);
  pinMode(controlPin1,OUTPUT);
  pinMode(controlPin2,OUTPUT);
  pinMode(enablePin,OUTPUT);
  
  digitalWrite(enablePin, LOW);
  
  Serial.begin(9600);
}

void loop()
{
  onOffSwitchState = digitalRead(onOffSwitchStatePin);
  delay(1);
  directionSwitchState=digitalRead(directionSwitchPin);
  motorSpeed = analogRead(potPin)/4;
  
  if(onOffSwitchState != previousOnOffSwitchState)
  {
    if(onOffSwitchState == HIGH)
    {
      motorEnabled = !motorEnabled;
    }
  }
  
  if(directionSwitchState != previousDirectionSwitchState)
  {
    if(directionSwitchState == HIGH)
    {
      motorDirection = !motorDirection;
    }
  }
  
  if(motorDirection == 0)
  {
    digitalWrite(controlPin1, HIGH);
    digitalWrite(controlPin2, LOW);
    Serial.println("Direction 1 (Il motore gira)");
  }
  else
  {
    digitalWrite(controlPin1, LOW);
    digitalWrite(controlPin2, HIGH);
    Serial.println("Direction 2(Il motore non gira)");
  }
  
  if(motorEnabled == HIGH)
  {
    analogWrite(enablePin, motorSpeed);
  }
  else
  {
    analogWrite(enablePin , 0);
  }
  
  previousDirectionSwitchState = directionSwitchState;
  previousOnOffSwitchState=onOffSwitchState;
}

L’arduino entra correttamente sia nell’ if che nell’ else che cambiano la direzione perchè nel monitor seriale vedo tutti e due i messaggi, perciò il problema non è software, inoltre ho provato a invertire i LOW e gl’ HIGH e in realtà ho scoperto che il motorino non gira se il controlPin1 è su LOW e il controlPin2 è su HIGH. Dove protrebbe essere il problema? Gira solamente quando sono invertiti…
E attaccando il motorino direttamente alla batteria ho provato e gira in entrambi i versi…

Negl’ allegati ci sono le foto della breadboard, spero di essermi spiegato bene :D, grazie in anticipo =D

Questo è lo schema dei collegamenti del 293 dalle foto mancano i collegamenti a GND sull'altro lato.

Grande paolo!!! Ora infatti funziona! Solamente che nel project book non ci sono quelle due messe a terra non ci sono...possibile?? Ho ricontrollato... Ad ogni modo grazie mille hai risolto il mio problema... :D :D :D