

Vamos a utilizar el L293D. Este driver permite controlar hasta dos motores de CC con un mismo chip. Este módelo se diferencia del resto de LM293x por no necesitar diodos externos para funcionar correctamente.
Hemos conectado dos de las patillas de control a los pines PWM para poder controlar la velocidad de giro del motor cómo Pinguino unicamente posee dos de estas salidas sólo podremos controlar la velocidad de los dos motores en una dirección (generalmente se usa para cuando avanza). Con elcircuito montado unicamente nos falta subir un programa a Pinguino que controle estos motores:
void setup(){ //Colocamos todos los pines que controlan los motores como salidas pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(15,OUTPUT); } void loop(){ //Ponemos los dos motores en una dirección digitalWrite(11,HIGH); digitalWrite(12,HIGH); digitalWrite(10,LOW); digitalWrite(15,LOW); //invertimos la dirección digitalWrite(10,LOW); digitalWrite(12,LOW); digitalWrite(10,HIGH); digitalWrite(15,HIGH); //movemos solo uno digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(10,LOW); digitalWrite(15,LOW); //movemos el otro digitalWrite(11,HIGH); digitalWrite(12,LOW); digitalWrite(10,LOW); digitalWrite(15,LOW); //Paramos todo digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(10,LOW); digitalWrite(15,LOW); //aceleramos for(i=0; i<=255; i++){ analogWrite(11, i); analogWrite(12, i); digitalWrite(10,LOW); digitalWrite(15,LOW); } //deceleramos for(i=255; i>0; i--){ analogWrite(11, i); analogWrite(12, i); digitalWrite(10,LOW); digitalWrite(15,LOW); } //esperamos delay(3000); }
Este programa encendera primero ambos motores en una dirección, tras unos instantes cambiará el sentido de giro de los motores, despues sólo moverá uno, a continuación ese parará y comenzará a moverse el otro. Por ultimo parara los dos y empezará a acelerarlos hasta el máximo, una vez lograda la velocidad máxima comenzará a frenarlos poco a poco hasta parar. Esperará 3 min antes de volver a empezar la secuencia.