Mesurer un intervalle de temps

J ai corrigé le code il fonctionne

#define  Bp9  9 
#define Bp10  10 
unsigned long temps1 = 0 ;
unsigned long temps2 = 0 ;
float temps3 = 0 ;


void setup() 
{
  Serial.begin(9600);
  pinMode(Bp9,INPUT_PULLUP);
  pinMode (Bp10,INPUT_PULLUP);

}

void loop() 
{
 if (! digitalRead(Bp9))
 {
 delay (50);
 temps1 = millis();
 while (! digitalRead(Bp9));
 delay(50);
 }
 
 if (! digitalRead(Bp10))
 {
 delay (50);
 temps2 = millis();
 while (! digitalRead(Bp10));
 delay(50);
 }

temps3 = ((temps2 - temps1)/1000);

Serial.println(temps3);

}

Par contre je rencontre un pb

j appuie sur bp 9 au bout de 10s
j appuie sur bp10 5 s plus tard

et temps3 m affiche 15s

pkoi la soustraction ne se fait elle pas ?

cordialement chris