Problema con 3 sensores Ping Parallax

PARTE 1

Buenos días Sr.'s,
hace días estuve mirando lo que me propusieron. FM Me propuso que los vibradores aumentaran su intensificación según la distancia del objeto. Eso lo he conseguido.
Este es un cachito pequeñito de este código:

 //Si esta entre 45cm y 60cm
              if((cm2>=45)&&(cm2<=60))
              {
                    for(int fadeValue = 0 ; fadeValue <= 64; fadeValue +=5) 
                       { 
                        analogWrite(vibrador2, fadeValue);                                     
                       }
              }
              else
              {    //Si NO esta entre 45cm y 60cm, esta entre 25cm y 45cm
                    for(int fadeValue = 0 ; fadeValue <= 127; fadeValue +=5) 
                       { 
                        analogWrite(vibrador2, fadeValue);                                     
                       }
              }

Pero lo que pasa es que me queda un código muy largo, aunque funciona todo correctamente.

He intentado aplicar la función tal y como me dijiste Sergegsx pero no he podido hacer que funcione.
El código actual y kilométrico es:

[color=brown][color=green]// Vibradores conectados al PIN correspondiente y a GND
// Estos pines estan conectados a PWM ya que son analalogicos y nos permite modificar los pulsos de energia
// http://arduino.cc/es/Tutorial/PWM y http://arduino.cc/es/Tutorial/SecretsOfArduinoPWM[/color]
int vibrador = 11;
int vibrador2 = 10;
int vibrador3 = 9;

[color=green]//Sensores de ultrasonido[/color]
const int pingPin = 7;
const int pingPin2 = 4;
const int pingPin3 = 2;

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

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

[color=green] //Distancia espacio/tiempo     [/color]
  long duration, duration2, duration3, cm, cm2, cm3;
 
 [color=green]/*Dentro del Loop vamos a activar los vibradores 
   en las distancias correspondientes */[/color]
  
[color=green]    // ----------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)[/color]
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);
  
[color=green]    //Especificamos los sensores como entrada de datos[/color]
  pinMode(pingPin,INPUT);
  duration = pulseIn(pingPin,HIGH);
  cm = microsecondsToCentimeters(duration);



 [color=green]   // ----------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)[/color]
  pinMode(pingPin2, OUTPUT);
  digitalWrite(pingPin2, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin2, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin2, LOW);

[color=green]  //Especificamos los sensores como entrada de datos[/color]
  
  pinMode(pingPin2,INPUT);
  duration2 = pulseIn(pingPin2, HIGH);
  cm2 = microsecondsToCentimeters2(duration2);
  
  

  [color=green]  // ----------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)[/color]
  pinMode(pingPin3, OUTPUT);
  digitalWrite(pingPin3, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin3, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin3, LOW);
  
[color=green] //Especificamos los sensores como entrada de datos[/color]
  pinMode(pingPin3,INPUT);
  duration3 = pulseIn(pingPin3, HIGH);
  cm3 = microsecondsToCentimeters3(duration3);