Dudas/problemas con motorshield en mi primer robot

Hola a todos!

Estoy empezando con esto de la electronica/robotica y arduino ha sido todo un descubrimiento para mi.
A pesar de que mis conocimientos son bastante basicos, tengo un par de miniproyectos para el trabajo; cosas muy sencillitas que no pasan de leer datos de varios sensores y encender led's.

Entonces llego el tiempo libre :stuck_out_tongue:

Aprovechando varias piezas de juguetes del peke que dado su estado (el estado de los juguetes) han sido donados a la ciencia estoy intentando hacer un robot capaz de moverse esquivando los obstaculos.

Resume de hardware:

1.-Arduino Duemilanove.
2.-Base con ruedas y dos motores DC en la parte de atras (uno para cada rueda. La bateria que movia los dos motores era de 250 ma y 3v).
3.-MotorShield 1.2 "Creo, porque lleva componentes encima de la version y no me acuerdo bien de lo que ponia :stuck_out_tongue: la compre en nkcelectronics.
4.-Dos sensores infrarojos Sharp GP2D12
5.-Sensor de ultrasonidos SRF05
6.-MicroServo Dys

Como proceso de aprendizaje he ido probando exitosamente uno a uno los componentes para entender como funcionaba todo. La unica pega que tengo es que no consigo con la MotorShield que el motor 2 cambie de sentido, a pesar de que veo que el led del pin 13 se enciende, el motor continua con su marcha normal. El motor 1 funciona correctamente. Puede que haya montado mal el kit o algo, ni idea.

Dejando de lado ese pequeƱo problema he continuado con el desarrollo del robot, montandolo completamente. Los sensores de infrarojos colocados en la perpendicular del movimiento (uno a cada lado) y el de ultrasonidos sobre el servo para poder barrer un pequeƱo abanico por delante. Asi mismo, los dos motores conectados a la MotorShield.
Para poder girar habia pensado poner los motores a moverse con sentidos diferentes para provocar el giro, aunque con la limitacion de que uno de ellos no consigo que varie su sentido de giro, me quedo con solo la posibilidad de girar hacia un lado.

Ahora solo me quedaba conectarlo todo a Arduino y a la MotorShield.

[MODO IGNORANTE TOTAL ON]
Viendo el codigo del programa ejemplo de manejo de la MotorShield llego a la conclusion de que solo usa 4 pines a pesar de pinchar casi todos los pines digitales de "Ardi" (Diminutivo cariƱoso para Arduino)

Motor A Direction Arduino Digital pin 13>
Motor A Speed (PWM) Arduino Digital pin 10>
Motor B Direction Arduino Digital pin 12>
Motor B Speed (PWM) Arduino Digital pin 9>

Tal y como son descritos en la pagina web donde he comprado el kit.

Ademas veo que aunque la placa viene preparada para un codificador, leds, botones y algun componente mas, el kit no los traer, por lo que supongo que seran extras que no necesito, ya que con que mueva los dos motores me basta. (Llego a esa conclusion partiendo de la base de que no tengo ni idea de para que vale ese codificador y los botones/leds que se le pueden aƱadir.)

Y como la ignorancia es muy atrevida, pues me atrevo a suponer que el resto de los pines que no uso para controlar los motores estan libres, ya que supongo que seran para controlar el resto de componentes extra de la placa que no tengo. De modo que lo tengo todo controlado, el pin de control del servo lo pongo en el pin 5 y el de control/lectura del SRF05 en el 3.

Con los pines de lectura de los sensores de infrarojos no tengo problema porque son analogicos.
[MODO IGNORANTE TOTAL OFF]

[MODO CRUDA REALIDAD ON]
Los problemas empiezan cuando intento dar vida a mi robot. Usando la libreria Servo, al crear un "servo" y definirle un pin de control no funcionan los motores, y el servo tampoco responde correctamente. Por lo tanto tampoco puedo leer (ni mandar que las haga) las lecturas del sensor de ultrasonidos. Lo que si puedo leer son las lecturas de los de infrarojos ya que estas entran por las entradas analogicas.

Llegado a este punto, y como si estuviera a borde de una nave en StarGate Atlantis, intento anular el servo y el sensor de ultrasonidos, y quedarme con los motores y los sensores infrarojos laterales, los cuales no sirven de mucho al avanzar hacia delante... entre eso y que solo puedo girar hacia un lado... pues ... vamos, que de momento mi robot da un poco de pena XDDDD
[MODO CRUDA REALIDAD OFF]

Que solucion puede haber para ponerlo todo a funcionar?

Habia pensado a modo chapuza intentar mover el servo solo cuando los motores esten parados, y hacer un detach del pin de control del servo antes de ponerlos a funcionar de nuevo; pero no se si funcionara.

Alguien me puede decir para que usa la MotorShield todos los pines?? si es que los usa claro :stuck_out_tongue:

Un saludo a todos!