Problem/a with/con 3 sensor Ping Parallax

Buenas tardes Sr.,
estoy en un proyecto de la universidad con la aplicación de Arduino y 3 sensores Ping Parallax y he tropezado con una piedra.

Hice un código para 1 sensor Ping de Parallax y 1 Vibrador, el cual se mostraba en el Monitor Serial.
Todo funciona correctamente, pero si intento hacer lo mismo con 3 sensores y 3 vibradores no me funciona. Solamente muestra las medidas del primer sensor y no de los demás.

Llevo mucho tiempo investigando, haciendo pruebas, de que puede ser pero no hay manera... Tengo muy pocos conocimientos de Arduino y es la primera vez que programo para este mismo así que no se muy bien como lo puedo arreglar y les estaría MUY agradecido de saber que puede estar fallando..

El Código es el siguiente:

/*
ÚLTIMA MODIFICACIÓN: 17 DE SEPTIEMBRE DEL 2012, POR ISAAC FERRES MELENDRES

PROYECTO FINAL DE
ISAAC FERRES MELENDRES
DAMIÀ MIGUEL FIGA NOTA: NOS FALTAN PUERTOS LIBRES. SE DEBERÍA AMPLIAR A UN ARDUINO MEGA O A OTRA PLACA ARDUINO.
HABRÍA QUE TENER EN CUENTA LA ALIMENTACIÓN NECESARIA DE SER 1 O 2 ARDUINOS Y FUTURAS
AMPLIACIONES COMO GPS, TRANSFORMADOR DE OCR, ETC.
Codigo PIN para:
3 sensor
3 motores vibrador

El circuito:

  • +V connection of the PING))) attached to +5V
  • GND connection of the PING))) attached to ground
  • SIG connection of the PING))) attached to digital pin 7

Estas constantes no cambian. */

// Vibradores conectados al PIN correspondiente y a GND
int vibrador = 13;
int vibrador2 = 12;
int vibrador3 = 8;

//Sensores de ultrasonido
const int pingPin = 7;
const int pingPin2 = 4;
const int pingPin3 = 2;

void setup()
{
// Iniciamos la comunicación por serial:
Serial.begin(14400);
}

void loop()
{
/* Establevemos variables para la duración del ping
y mostramos el resultado de la distancia en centrimetros*/

//Distancia espacio/tiempo
long duration, duration2, duration3, cm, cm2, cm3;

/*Dentro del Loop vamos a activar los vibradores
en las distancias correspondientes */

// ----------PING 1-------
// The PING))) envia un pulso alto (HIGH) con duracion de 2 microsegundos.
// Luego envia un pulso bajo (LOW) para hacer una limpieza del pulso alto (LOW)
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);

// ----------PING 2-------
// The PING))) envia un pulso alto (HIGH) con duracion de 2 microsegundos.
// Luego envia un pulso bajo (LOW) para hacer una limpieza del pulso alto (LOW)
pinMode(pingPin2, OUTPUT);
digitalWrite(pingPin2, LOW);
delayMicroseconds(2);
digitalWrite(pingPin2, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin2, LOW);

// ----------PING 3-------
// The PING))) envia un pulso alto (HIGH) con duracion de 2 microsegundos.
// Luego envia un pulso bajo (LOW) para hacer una limpieza del pulso alto (LOW)
pinMode(pingPin3, OUTPUT);
digitalWrite(pingPin3, LOW);
delayMicroseconds(2);
digitalWrite(pingPin3, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin3, LOW);

//Especificamos los vibradores como salida de datos
pinMode(vibrador,OUTPUT);
pinMode(vibrador2,OUTPUT);
pinMode(vibrador3,OUTPUT);

//Especificamos los sensores como entrada de datos
pinMode(pingPin,INPUT);
duration = pulseIn(pingPin,HIGH);
cm = microsecondsToCentimeters(duration);

pinMode(pingPin2,INPUT);
duration = pulseIn(pingPin2, HIGH);
cm2 = microsecondsToCentimeters2(duration);

pinMode(pingPin3,INPUT);
duration = pulseIn(pingPin3, HIGH);
cm3 = microsecondsToCentimeters3(duration);

// VIBRADOR 1 (DELANTERO)
//Si Sensor 1 es menor a 50cm y mayor a 10cm activamos Vibrador 1.
if((cm>=10)&&(cm<=60))
{
digitalWrite(vibrador,HIGH);
}
else
{
digitalWrite(vibrador,LOW);
}

// VIBRADOR 2 (DERECHO)
//Si Sensor 1 es menor a 50cm y mayor a 10cm activamos Vibrador 1.
if((cm2>=10)&&(cm2<=60))
{
digitalWrite(vibrador2,HIGH);
}
else
{
digitalWrite(vibrador2,LOW);
}

// VIBRADOR 3 (IZQIUERDO)
//Si Sensor 1 es menor a 50cm y mayor a 10cm activamos Vibrador 1.
if((cm3>=10)&&(cm3<=60))
{
digitalWrite(vibrador3,HIGH);
}
else
{
digitalWrite(vibrador3,LOW);
}

Serial.print(cm);
Serial.print("cm");
Serial.print(" ");
Serial.print(cm2);
Serial.print("cm2");
Serial.print(" ");
Serial.print(cm3);
Serial.print("cm3");
Serial.println();

//Tiempo de muestreo expresado en milisegundos
delay(10);
} //Cerramos el LOOP

//Convertimos las medidas de microsegundos a centimetros
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}

long microsecondsToCentimeters2(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}

long microsecondsToCentimeters3(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}

Aquí un video demostrativo:

Otro problema también es que tarda MUCHO en muestrear cuando están los 3 sensores Ping puestos, y no como cuando solamente tengo 1 Ping que tarda 10mseg. Mi pregunta respecto a eso es, se podría mejorar la velocidad de muestreo con los 3 Ping cambiando la Placa Arduino UNO por un Arduino MEGA o superior?
Muchísimas gracias de nuevo!