
Tutorial Robot Autónomo: Parte I
Ya sabemos controlar motores y sabemos sentir (ver). Combinemos estas habilidades para hacer que nuestro robot se mueva.
Requisitos:
- Computadora (mac)
- Arduino UNO.
- Llantas (2)
- Motores DC (2)
- Sensor Ultrasonico
- Motor Mini Servo
- Arduino IDE (https://www.arduino.cc/en/Main/Software)
Primero vamos a armar el motor shield con los 2 DC motors y los vamos a hacer funcionar de forma sencilla para ver como operar los motores a través del shield.
Componentes

El sensor ultrasonico se puede pegar con silicon transparente escolar a la paleta del servo. El alambrado es sencillo:
- El servo se conecta a la terminal de Servo2 en la shield
- El Sensor tiene 4 conexiones
- Vcc al pin en la shield soldado a la fila 5V
- GND al pin en la shield soldado a la fila GND
- Trig al pin en la shield soldado en A5
- Echo al pin en la shield soldado en A4
- Luego se conectan los motores DC al shield
- M1 en la shield al motor derecho
- M4 en la shield al motor izquierdo

Ahora solo resta conectar la shield sobre la Arduino UNO, el cable USB a la Arduino UNO y subimos la sketch. Vamos a subir la sketch y no tendremos los motores conectados a las llantas ni mucho menos el chasis. Solo queremos ver como funciona el sketch. Una vez cargada a la UNO podremos ver como se mueven los motores. Se debería mover tanto los DC como el servo.
En el sketch podemos ver:
- setup() y loop()
- moveStop(), moveForward() y moveBackward()
Ahora podemos desconectar la UNO y comenzar a conectar los motores a las llantas y la UNO/Shield sobre el battery pack para luego montarlo a un chasis sobre las llantas.

El código para este proyecto seria sencillo:
#include <AFMotor.h> #define MAX_SPEED_OFFSET 10 // Maxima separation entre motores #define MAX_SPEED 180 // Maxima velocidad (80% de 256) AF_DCMotor motor1(1, MOTOR12_1KHZ); // crear motor #1 en M1 AF_DCMotor motor2(4, MOTOR12_1KHZ); // crear motor #2, en M2 String motorSet = ""; int speedSet = 0; void setup() { Serial.begin(9600); moveForward(); delay(2000); moveStop(); delay(2000); moveBackward(); delay(2000); moveStop(); } void loop() { } void moveStop() { Serial.println("Deteniendo..."); motor1.run(RELEASE); motor2.run(RELEASE); } // stop the motors. void moveForward() { Serial.println("Avanzando..."); motorSet = "FORWARD"; motor1.run(FORWARD); // Encender hacia el frente motor2.run(FORWARD); // Encender hacia el frente for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // Acelerar lentamente { motor1.setSpeed(speedSet+MAX_SPEED_OFFSET); motor2.setSpeed(speedSet); delay(5); } } void moveBackward() { Serial.println("Retrocediendo..."); motorSet = "BACKWARD"; motor1.run(BACKWARD); // Encender hacia atras motor2.run(BACKWARD); // Encender hacia atras for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // Acelerar lentamente { motor1.setSpeed(speedSet+MAX_SPEED_OFFSET); motor2.setSpeed(speedSet); delay(5); } }
Al correr este sketch podemos ver que los motores arrancan, se detienen, retroceden y se detienen nuevamente.
Ahora vamos a agregar los ojos, el sensor ultrasonico.
Esta va para largo!