Compteur de temps entre deux mesures sur Arduino

Bonjour, j'ai essayé cette methode et voilà ce que ça me donne :
#define trigPin 12 //Trig Ultrasons (sortie)
#define echoPin 13 //Echo Ultrasons (entrée)
#define echoPin2 11 //Led verte
#define trigPin2 10 //Led rouge

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Trig est une sortie
pinMode(echoPin, INPUT); //Echo est le retour, en entrée
pinMode(echoPin2, INPUT);
pinMode(trigPin2, OUTPUT);
}

void loop() {
long duration, distance, duration2, second, vitesse;
unsigned long temps,temps2,tempsf,tempsfinal;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //Trig déclenché 10ms sur HIGH
digitalWrite(trigPin, LOW);

// Calcul de l'écho
duration = pulseIn(echoPin, HIGH);
// Distance proportionnelle à la durée de sortie
distance = duration340/(210000); //Vitesse du son théorique

delay(100);

digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10); //Trig déclenché 10ms sur HIGH
digitalWrite(trigPin2, LOW);

// Calcul de l'écho
duration2 = pulseIn(echoPin2, HIGH);
// Distance proportionnelle à la durée de sortie
second = duration2340/(210000); //Vitesse du son théorique

if(distance<7){
temps = millis();
}
if(second<7){
temps2=millis();
tempsf=temps2-temps;
tempsfinal=pow(tempsf,-3);
vitesse= 5/tempsf;
Serial.print(tempsfinal);
Serial.print(" ");
Serial.print(vitesse);
delay (1000);
}

}

Le soucis c'est que mon tempsfinal est toujours aussi grand (non exposant -3 comme demandé)
et que la vitesse vaut zéro puisque 5/+l'infini ça n'a pas l'air de lui plaire.

Es-ce normal que millis me donne ça ?