NewPing Library: HC-SR04, SRF05, SRF06, DYP-ME007, Parallax PING))) - v1.7

great job... i use the library in my project and test my robot.
i have 15 SRF05 sonar sensors on the bot. I set pingSpeed 200ms, and pingInterval 35ms, but sometimes i get big value or negative value.

#include <NewPing.h>
#define MAX_DISTANCE 200

NewPing sonar0(41, 42, MAX_DISTANCE);
NewPing sonar1(43, 44, MAX_DISTANCE);
NewPing sonar2(45, 20, MAX_DISTANCE);
NewPing sonar3(21, 22, MAX_DISTANCE);
NewPing sonar4(23, 24, MAX_DISTANCE);
NewPing sonar5(25, 26, MAX_DISTANCE);
NewPing sonar6(27, 28, MAX_DISTANCE);
NewPing sonar7(29, 30, MAX_DISTANCE);
NewPing sonar8(31, 32, MAX_DISTANCE);
NewPing sonar9(34, 33, MAX_DISTANCE); //10
NewPing sonar10(35, 36, MAX_DISTANCE); //11
NewPing sonar11(37, 38, MAX_DISTANCE);
NewPing sonar12(39, 40, MAX_DISTANCE);
NewPing sonar13(50, 51, MAX_DISTANCE);
NewPing sonar14(52, 53, MAX_DISTANCE);

#define pingSpeed      100
#define pingInterval   35
#define SONAR_NUM      15
unsigned long pingTimer[SONAR_NUM];

void setup()
{

  Serial.begin(115200);
  pingTimer[0] = millis() + pingSpeed;
  for(int i = 0; i < SONAR_NUM - 1; i++) {
    pingTimer[i+1] = pingTimer[i] + pingInterval;
  }
}

void loop() 
{
  int cm[15];
  unsigned long time = millis();
  if (millis() >= pingTimer[0]) {
    pingTimer[0] += pingSpeed;   
    cm[0] = sonar0.ping_cm();
  }
  if (millis() >= pingTimer[1]) {
    pingTimer[1] = pingTimer[0] + pingInterval;   
    cm[1] = sonar1.ping_cm();
  }
  
  if (millis() >= pingTimer[2]) {
    pingTimer[2] = pingTimer[1] + pingInterval;    
    cm[2] = sonar2.ping_cm();
  }  
  
  if (millis() >= pingTimer[3]) {
    pingTimer[3] = pingTimer[2] + pingInterval;
    
    cm[3] = sonar3.ping_cm();

  }

  if (millis() >= pingTimer[4]) {
    pingTimer[4] = pingTimer[3] + pingInterval;

    cm[4] = sonar4.ping_cm();

  }
  
  if (millis() >= pingTimer[5]) {
    pingTimer[5] = pingTimer[4] + pingInterval;
    
    cm[5] = sonar5.ping_cm();
  }
  
  if (millis() >= pingTimer[6]) {
    pingTimer[6] = pingTimer[5] + pingInterval;

    cm[6] = sonar6.ping_cm();
  }
  
  if (millis() >= pingTimer[7]) {
    pingTimer[7] = pingTimer[6] + pingInterval;
    cm[7] = sonar7.ping_cm();
  }
  
  if (millis() >= pingTimer[8]) {
    pingTimer[8] = pingTimer[7] + pingInterval;
    cm[8] = sonar8.ping_cm();
  }
  
  if (millis() >= pingTimer[9]) {
    pingTimer[9] = pingTimer[8] + pingInterval;
    cm[9] = sonar9.ping_cm();
  }
  
  if (millis() >= pingTimer[10]) {
    pingTimer[10] = pingTimer[9] + pingInterval;
    cm[10] = sonar10.ping_cm();
  }
  
  if (millis() >= pingTimer[11]) {
    pingTimer[11] = pingTimer[10]+ pingInterval;
    cm[11] = sonar11.ping_cm();
  }
  
  if (millis() >= pingTimer[12]) {
    pingTimer[12] = pingTimer[11]+ pingInterval;
    cm[12] = sonar12.ping_cm();
  }

  if (millis() >= pingTimer[13]) {
    pingTimer[13] = pingTimer[12]+ pingInterval;
    cm[13] = sonar13.ping_cm();
  }

  if (millis() >= pingTimer[14]) {
    pingTimer[14] = pingTimer[13]+ pingInterval;
    cm[14] = sonar14.ping_cm();
    for(int i = 0; i < 15; i++) {
      Serial.print("Ping");
      Serial.print(i);
      Serial.print(": ");
      Serial.print(cm[i]);
      Serial.print("cm");
    }
    Serial.println();
  }  
}

The ping12 result like this :

Ping12: 3328cm
Ping12: 12288cm
Ping12: -24544cm

my code is not simple and clean, and i'd like to know how to use NewPing to slove 15 sonar sensors problem