Arduino UNO R3 con puente H L293D y motoreductores TT

L293D

Fuente: http://platea.pntic.mec.es/~mhidalgo/documentos/10_manejo_de_motores_CC_con_arduino.pdf

Código sin sensores, solo moverse para adelante, atrás y girar a ambos lados:

 

char val;
int PWMA = 6; //velocidad motor A
int dirmotorA1 = 7; // direccion motor a borna 1
int dirmotorA2= 8; // direccion motor a borna2
int PWMB = 9; //velocidad motor B
int dirmotorB1 = 10; // direccion motor b borna 1
int dirmotorB2= 11; // direccion motor b borna2
int velocidad = 120;
void adelante(){
digitalWrite (dirmotorA1,HIGH);// gira motor A derecha
digitalWrite (dirmotorA2,LOW);
analogWrite (PWMA, velocidad);
digitalWrite (dirmotorB1,LOW);// gira motor B izquierda
digitalWrite (dirmotorB2,HIGH);
analogWrite (PWMB, velocidad);
}

void atras(){
digitalWrite (dirmotorA1,LOW);// gira motor A izquierda
digitalWrite (dirmotorA2,HIGH);
analogWrite (PWMA, velocidad);
digitalWrite (dirmotorB1,HIGH);// gira motor B derecha
digitalWrite (dirmotorB2,LOW);
analogWrite (PWMB, velocidad);
}
void izquierda(){
digitalWrite (dirmotorA1,HIGH);// gira motor A derecha
digitalWrite (dirmotorA2,LOW);
analogWrite (PWMA, velocidad);
digitalWrite (dirmotorB1,HIGH);// gira motor B derecha
digitalWrite (dirmotorB2,LOW);
analogWrite (PWMB, velocidad);
}
void derecha(){
digitalWrite (dirmotorA1,LOW);// gira motor A izquierda
digitalWrite (dirmotorA2,HIGH);
analogWrite (PWMA, velocidad);
digitalWrite (dirmotorB1,LOW);// gira motor B izquierda
digitalWrite (dirmotorB2,HIGH);
analogWrite (PWMB, velocidad);
}
void paro(){
digitalWrite (dirmotorA1,HIGH);// para motor A
digitalWrite (dirmotorA2,HIGH);
analogWrite (PWMA, 0);
digitalWrite (dirmotorB1,HIGH);// para motor B
digitalWrite (dirmotorB2,HIGH);
analogWrite (PWMB, 0);
}

void setup()
{
int i;
for(i=6;i<12;i++)
{
pinMode(i, OUTPUT); //poner pin 6,7,8,9,10,11 de salida
}
Serial.begin(9600);
paro();
}
void loop()
{
// if( Serial.available() )
{
// val = Serial.read();
}
// switch (val)
{
paro();
delay(100);
adelante();
delay(300);
atras();
delay(1000);
izquierda();
delay(1000);
derecha();
delay(3000);
}
}