non ce n'est pas ce que j'ai conseillé...
--> où est la variable volatile?
--> la section critique doit être réduite à sa plus simple expression comme indiqué plus haut dans mon code...
unsigned int nbrtourCopie;
noInterrupts(); // désactive les interruptions
nbrtourCopie = nbrtour;
nbrtour = 0;
interrupts(); // réactive les interruptions
// ici maintenant vous êtes tranquille vous avez dans nbrtourCopie la valeur lue que vous utilisez pour les calculs
// C'EST ICI QUE VOUS FAITES LE BOULOT D'AFFICHAGE
Pour la gestion par millis(), c'est juste dans l'autre sens.. if(millis() - temps > 500) {...} (en supposant que temps c'est la valeur de millis() la dernière fois que vous avez effectué les calculs --> avec 500 ça vous ferait lire le compteur 2 fois par secondes, c'est un peut trop... plutôt toutes les 5 ou 10 secondes ce serait mieux --> 5000 ou 10000