En este video se puede ver el control de motores basico:

 

Codigo:

 

//Sual Labs 2014
//Codigo de control de motores Basico
int EN1 = 6;  
int EN2 = 5;
int IN1 = 7;
int IN2 = 4;
 
void setup()
{
    //Inicializa los pines 4,5,6,7 como salidas    
    pinMode(IN2, OUTPUT);          //Pin4 salida
    pinMode(EN2, OUTPUT);        //Pin5 salida
    pinMode(EN1, OUTPUT);        //Pin6 salida
    pinMode(IN1, OUTPUT);          //Pin7 salida
}
 
void loop()
{
 Alto(6000);
  digitalWrite(IN2, LOW);     //Pin10 0
  analogWrite(EN2,200);   //Pin11 1
  digitalWrite(IN1, LOW);   //Pin12 1
  analogWrite(EN1,75);     //Pin13 0
  delay(10000);
 Avanzar(200,1000);
 Izquierda(100,1000);
 Avanzar(200,1000);
 Izquierda(100,1000);
 Avanzar(200,1000);
 Izquierda(100,1000);
 Avanzar(200,1000);
 Izquierda(100,1000);
 Alto(1000);
 Izquierda(200,1500);
 Derecha(200,1500);
 Avanzar(255,500);
 Regresar(255,500);
 Izquierda(100,3000);
 Derecha(100,3000);
 Avanzar(100,3000);
 Regresar(100,3000);
 
}
 
//********************
//AREA DE SUB RUTINAS
//********************
//Sub-rutina Avanzar, cuando esta sub-rutina es llamada el robot avanza
//Se ejecutara la subrutina por los milisegundos que esten entre parentesis
int Avanzar(int Vel, int Mil){ //Llamado a la sub-rutina
  digitalWrite(IN2, LOW);     //Pin10 0
  analogWrite(EN2,Vel);      //Pin11 1
  digitalWrite(IN1, LOW);   //Pin12 1
  analogWrite(EN1,Vel);     //Pin13 0
  delay(Mil);
//Espera el tiempo que se indica entre parentesis
//La configuracion 0110 en los pines 10,11,12,13 
//hace que el robot avance
  }   //Termina la sub-rutina de Avanzar
//Sub-rutina Regresar, cuando esta sub-rutina es llamada el robot retrocede
//Se ejecutara la subrutina por los milisegundos que esten entre parentesis
int Regresar(int Vel, int Mil){ 
  digitalWrite(IN2, HIGH);     //Pin10 0
  analogWrite(EN2,Vel);     //Pin11 1
  digitalWrite(IN1, HIGH);   //Pin12 1
  analogWrite(EN1,Vel);     //Pin13 0
  delay(Mil);
//Espera el tiempo que se indica entre parentesis
//La configuracion 1001 en los pines 10,11,12,13 
//hace que el robot regrese
  }   //Termina la sub-rutina de Regresar
 
 
 
 
//Sub-rutina Izquierda, cuando esta sub-rutina es llamada el robot gira a la izquierda
//Se ejecutara la subrutina por los milisegundos que esten entre parentesis
int Izquierda(int Vel, int Mil){ 
  digitalWrite(IN2, LOW);     //Pin10 0
  analogWrite(EN2,Vel);    //Pin11 1
  digitalWrite(IN1, HIGH);   //Pin12 1
  analogWrite(EN1,Vel);     //Pin13 0
  delay(Mil);
//Espera el tiempo que se indica entre parentesis
//La configuracion 0101 en los pines 10,11,12,13 
//hace que el robot de vuelta a la izquierda
  }  
//Termina la sub-rutina de Izquierda
//Sub-rutina Derecha, cuando esta sub-rutina es llamada el robot gira a la derecha
//Se ejecutara la subrutina por los milisegundos que esten entre parentesis
int Derecha(int Vel, int Mil){ 
  digitalWrite(IN2, HIGH);     //Pin10 0
  analogWrite(EN2,Vel);     //Pin11 1
  digitalWrite(IN1, LOW);   //Pin12 1
  analogWrite(EN1,Vel);     //Pin13 0
  delay(Mil);
//Espera el tiempo que se indica entre parentesis
//La configuracion 1010 en los pines 10,11,12,13 
//hace que el robot de vuelta a la derecha
  }   //Termina la sub-rutina de Derecha
  
  //Sub-rutina Alto, cuando esta sub-rutina es llamada el robot ha un alto
int Alto(int Mil){                //Llamado a la sub-rutina
  digitalWrite(5, LOW);   //Pin11 0
  digitalWrite(6, LOW);   //Pin12 0
  delay(Mil);
//Espera el tiempo que se indica entre parentesis  
//La configuracion 0000 en los pines 10,11,12,13 
//hace que el robot hace un alto
  }   //Termina la sub-rutina de Alto