calcul du temps entre deux instructions

Il faut mesurer le temps entre de début de l'allumage et la fin de l'allumage et cumuler les temps.
Ce qui donne par exemple:

int v = 13;
int l = 7;
void setup () {
  pinMode(13, OUTPUT);
  pinMode(7, INPUT);
}

void loop () {
  static unsigned dureeAllumage=0;
  static unsigned debutAllumage=millis();
  static byte etatprec=LOW;

  byte etat=digitalRead(7);
  if (etat == HIGH) {
    digitalWrite(13, HIGH);
  }
  if (etat == LOW) {
    digitalWrite(13, LOW);
  }
  if (etat==HIGH && etatprec==LOW)
  {
    // on vient d'allumer la led
    debutAllumage=millis();
  }
  else if (etat==LOW && etatprec==HIGH)
  {
    // on vient d'éteindre la led
    dureeAllumage+=millis()-debutAllumage;
  }
  etatprec=etat; 
}