Arduino stopwatch

Here is my complete code:

#include <Firmata.h>


#include <TimerFreeTone.h>


#include <NewPing.h>

#define SONAR_NUM     2 // Number or sensors.
#define MAX_DISTANCE 200 // Max distance in cm.

byte analogPin = 0; // PIN pour les boutons (FIRMATA)

boolean SONARJ1 = false;
boolean SONARJ2 = false;



int ledJ1 = 7;
int ledJ2 = 6;
int ledJ1State = 0;
int ledJ2State = 0;


NewPing sonar[SONAR_NUM] = { // Sensor object array.
  NewPing(3, 2, MAX_DISTANCE),
  NewPing(11, 8, MAX_DISTANCE),
};



// FIRMATA
void analogWriteCallback(byte pin, int value)
{
  if (IS_PIN_PWM(pin)) {
    pinMode(PIN_TO_DIGITAL(pin), OUTPUT);
    analogWrite(PIN_TO_PWM(pin), value);
  }
}
//


void setup() {
  Serial.begin(9600);

  // Initialisation de Firmata
  Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
  Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
  Firmata.begin(9600);
  //

  pinMode(ledJ1, OUTPUT);
  pinMode(ledJ2, OUTPUT);
}

void loop() {
  // Envoi des valeur à PROCESSING //
  while (Firmata.available()) {
    Firmata.processInput();
  }
  Firmata.sendAnalog(analogPin, analogRead(analogPin));
  if (analogPin >= TOTAL_ANALOG_PINS) {
    analogPin = 0;
  }
  //                                //









  for (uint8_t i = 0; i < SONAR_NUM; i++) { // Loop through each sensor and display results.
    delay(29); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.


    if (sonar[i - 1].ping_cm() < 25 && sonar[i - 1].ping_cm() > 2.5) {// SONAR J1
      SONARJ1 = true;
      SONARJ2 = false;
      while (SONARJ1 == true && SONARJ2 == false) {

        digitalWrite(ledJ1, HIGH);
        while (Firmata.available()) {
          Firmata.processInput();
        }

        Firmata.sendAnalog(analogPin, analogRead(analogPin));
        SONARJ1 = false;
        SONARJ2 = false;
      }

    }
  }
}

I guess it's a logic error.