Problema con Motore DC e ponte H (L293DNE), Arduino UNO

Salve,

stavo provando a realizzare il progetto 10 del libro dei progetti di Arduino (quello che viene con lo starter kit), ho collegato tutto correttamente come da schema suggerito, scritto il programma (come è sul libro, ma riguardandolo non ci trovo buchi, ed ho fatto pure qualche prova di variazione senza esiti) e scaricatolo su Arduino il motore DC che è collegato con il Ponte H (L293DNE) rimane sempre acceso, non c'è verso di spegnerlo nonostante al piedino 1 (del ponte H, collegato all'uscita digitale 9) vengano inviati solo messaggi del tipo:

analogWrite(9, 0);
digitalWrite(9, LOW);

Il progetto prevede la possibilità di invertire la la rotazione del motore giocando con i piedini 2 e 7 del ponte H, e questo funziona.

Il progetto prevede inoltre la possibilità di modificare la velocità del motore sempre comunicando con il piedino 1 del ponte H, con un comando del tipo

analogWrite(9, velocita);

Neanche la regolazione della velocità funziona, insomma è come se il piedino 1 del ponte H ricevesse sempre costantemente il comando di fare stare il motore acceso con il massimo della velocità, senza possibilità di diminuirla ne di spegnerla.

Secondo voi è rotto il ponte H o c'è qualche cosa che potrei aver sbagliato di cui non riesco a rendermi conto?

Grazie mille per l'aiuto,

MkC

puoi postare tutto il codice, tnks verifica attentamente i collegamenti

Alexio.

Ecco il codice

const int controlPin1 = 2;
const int controlPin2 = 3;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStateSwitchPin = 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(onOffSwitchStateSwitchPin, INPUT);
  pinMode(controlPin1, OUTPUT);
  pinMode(controlPin2, OUTPUT);
  pinMode(enablePin, OUTPUT);


  analogWrite(enablePin, 0);
}

void loop() {
  onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
  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 == 1) {
    digitalWrite(controlPin1, HIGH);
    digitalWrite(controlPin2, LOW);
  }
  else {
    digitalWrite(controlPin1, LOW);
    digitalWrite(controlPin2, HIGH);
  }

  if (motorEnabled == 1) {
    // analogWrite(enablePin, 0);
  }
  else {
    //  analogWrite(enablePin, 0);
  }

  previousDirectionSwitchState = directionSwitchState;
  previousOnOffSwitchState = onOffSwitchState;

}