por alguma razão não tens as funções de controle dos motores no teu código, tenta assim:
// ---------------------------------------------------------------------------- ServoTimer2
// importar a livraria Servo
#include <Servo.h>
Servo servo; // declarar uma instancia da livraria, neste caso chama-se "servo"
int servoPin = 9; //
// ---------------------------------------------------------------------------- Metro
// importar a livraria Metro, esta livraria permite criar temporizadores
// http://www.arduino.cc/playground/Code/Metro
#include <Metro.h>
int duration = 300; // duração do temporizador em milisegundos
Metro mede_distancia = Metro(duration); // declarar instância
// ---------------------------------------------------------------------------- SENSOR SHARP
int sensorPin = 2; // pin onde o sensor SHARP está ligado
int sensorValue = 0; // variável que vai conter o valor de leitura do sensor
int esquerda, direita, frente; // variáveis que vão conter os valores de leitura do sensor
// ---------------------------------------------------------------------------- VARIÁVEIS DE CONTROLE
// definição de uma distância segura, valores abaixo significa que está perto de um obstáculo
int distanciaSegura = 150;
// --------------------------------------------------------------------------- Motores
int motor_left[] = {5, 6};
int motor_right[] = {9, 10};
// ---------------------------------------------------------------------------- Setup
// função chamada quando o Arduino é inicializado
void setup() {
Serial.begin(9600);
// declarar em que pin está o servo
servo.attach(servoPin);
// Setup motores
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}
}
// ---------------------------------------------------------------------------- Loop
// função chamada infinitamente após o setup()
void loop() {
// mede distancia de X em X tempo
if (mede_distancia.check() == 1) {
olhaFrente();
}
// se a distância em frente for menor do que a distância segura previeamente definida
// decidi para onde ir
if (frente < distanciaSegura) drive_forward();
else decidirDireccao();
}
// ---------------------------------------------------------------------------- Decide direcção
void decidirDireccao() {
motor_stop();
olhaEsquerda();
delay(250);
motor_stop();
olhaDireita();
delay(250);
if (esquerda < direita) turn_left();
else turn_right();
}
// ---------------------------------------------------------------------------- Radar
void olhaEsquerda() {
// olha para a esquerda e mede distância
servo.write(140);
delay(500);
readIR();
esquerda = sensorValue;
}
void olhaDireita() {
// olha para a direita e mede distância
servo.write(40);
delay(500);
readIR();
direita = sensorValue;
}
void olhaFrente() {
// olha para a direita e mede distância
servo.write(90);
delay(500);
readIR();
frente = sensorValue;
}
// ---------------------------------------------------------------------------- Leitura do sensor SHARP
int readIR() {
return sensorValue = analogRead(sensorPin);
//Serial.println(sensorValue);
}
// --------------------------------------------------------------------------- Navegação
void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}
void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void turn_right(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}