Rotazione motore DC

Salve amici,
sapreste indicarmi un semplice sketch che permetta di controllare un motore DC con ponte H. Come hardware ci sarebbero 2 bottoni che dovrebbero gestire il senso di rotazione (destra, sinistra).

Grazie

Quale ponte H o schield stai usando?
Se non hai ancora scelto il ponte H dacci la corrente nominale del motore.

Ciao Uwe

Ciao uwe,
il ponte H è il L2930NE. il motore è alimentato con una batteria a 9v.

Intendi il L293 o veramente il L2930 ?

sul cip c'è scritto L2930NE, sulla book di arduino invece viene identificato come L293D

ferdard:
sul cip c'è scritto L2930NE, sulla book di arduino invece viene identificato come L293D

La sigla deve essere "L293DNE" ove "L293D" è il componente e "NE" il tipo di package, controlla bene perché sicuramente hai scambiato la D per una O.

hai ragione!

Hai l' integrato nudo o su una schedina o shield?
Ciao Uwe

nudo da posizionare sulla basetta di prototizzazione. Per la parte dei collegamento ho già lo schema.

prova questo:
http://scuola.arduino.cc/it/content/controlla-motore-dc-ponte-h-l293d

lo scketch potrebbe andare bene, perchè permette di invertire il senso di rotazione del motore. In che modo posso modificare il codice in modo da avere due pulsanti uno per ogni senso di marcia. così come è scritto adesso, tiene il motore sempre in rotazione.

const int switchPin = 2;     
const int motor1Pin = 3;       
const int motor2Pin = 4;      
const int enablePin = 9;    
const int ledPin = 13;           
void setup() {         
pinMode(switchPin, INPUT);             
pinMode(motor1Pin, OUTPUT);      
pinMode(motor2Pin, OUTPUT);      
pinMode(enablePin, OUTPUT);     
pinMode(ledPin, OUTPUT);        
digitalWrite(enablePin, HIGH);               
blink(ledPin, 3, 100); 
}     
void loop(){         
if (digitalRead(switchPin) == HIGH) {       
digitalWrite(motor1Pin, LOW);   
digitalWrite(motor2Pin, HIGH);     
}      
else {       
digitalWrite(motor1Pin, HIGH);        
digitalWrite(motor2Pin, LOW);  
}
}
void blink(int whatPin, int howManyTimes, int milliSecs)  {     
int i = 0;    
for ( i = 0; i < howManyTimes; i++) {       
digitalWrite(whatPin, HIGH);       
delay(milliSecs/2);       
digitalWrite(whatPin, LOW);       
delay(milliSecs/2);
}
}

ho trovato la soluzione, posto schema e sketch.

const int switchPin = 2;
const int switchPin2 = 5;
const int motor1Pin = 3;       
const int motor2Pin = 4;      
const int enablePin = 9;    
           
void setup() {         
pinMode(switchPin, INPUT); 
pinMode(switchPin2, INPUT); 
pinMode(motor1Pin, OUTPUT);      
pinMode(motor2Pin, OUTPUT);      
pinMode(enablePin, OUTPUT);     
        
digitalWrite(enablePin, HIGH);               

}     
void loop(){         
if (digitalRead(switchPin) == HIGH) {       
digitalWrite(motor1Pin, LOW);   
digitalWrite(motor2Pin, HIGH);     
}
else if (digitalRead(switchPin2) == HIGH) {

 digitalWrite(motor1Pin, HIGH);   
digitalWrite(motor2Pin, LOW); 
  
}
else {       
digitalWrite(motor1Pin, LOW);        
digitalWrite(motor2Pin, LOW);  
}
}

ci sono riuscito! Progetto completato.