Erreur script capteur effet Hall

Bonjour, je dois faire dans le cadre de mon TIPE un compteur de vitesse avec un capteur à effet Hall.
Je voudrais afficher sur un écran lcd 128x128 ma vitesse.
J’ai fait ce programme, mais il a un problème au niveau des lignes de codes pour l’affichage sur l’écran.
Le code joint ne crée pas d’avertissement car j’ai mis en commentaire la partie qui pose problème
( des lignes 67 à 78 ).

Code erreur joint après le code

Pourriez m’indiquer mon erreur.

Merci

// Déclaration des librairies
// Pour l'écran
#include <Arduino.h>
#include <U8g2lib.h>
/* les pins écrans
  GND --> GND
  VCC --> 5V
  SCL --> A5
  SDA --> A4
*/
//Déclaration de l'écran 128x128
U8G2_SSD1327_MIDAS_128X128_1_SW_I2C u8g2(U8G2_R0, A5, A4);



const int ledPin = 13; // à supprimer si led à souder
// Déclaration de mon détecteur
const int hallPin = 2;
// Signal capteur
int sensorValue;
volatile int compteur;
unsigned long temps;
int tempspasse = 100;     //On choisit l'intervalle de temps sur lequel on veut mesurer le nombre de période (plus c'est petit mieux c'est)
//Pendant 100ms on compte le nombre de fronts descendants
// Variable vitesse
int vitessekm_h;

void setup() {

  /* Initialisation de l'écran
    U8g2 Project: SSD1306 Test Board */
  pinMode(A4, OUTPUT);
  digitalWrite(A4, 0);
  u8g2.begin();
  u8g2.setPowerSave(0);

  // Ecriture sur le PC
  Serial.begin(9600);
  Serial.println("écrit sur pc");
  pinMode( ledPin, OUTPUT );
  pinMode( hallPin, INPUT );
  // attachInterrupt(hallPin, increment,RISING); //fait une interruption dès que le senseur Hall passe de l'état bas à l'état haut ( Original )
  
   /* utilisation du mode interruption :
        attachInterrupt(interrupt, function, mode);
              * interrupt : numéro de la broche utilisée
                    sur la carte Arduino UNO : 0 pour la broche 2 et 1 pour la broche 3
              * function : nom de la fonction à appeler lorsque l'interruption est déclenchée
              * mode :type de déclenchement
                    - LOW : passage à l'état bas de la broche
                    - FALLING : détection d'un front descendant
                    - RISING : détection d'un front montant
                    - CHANGE : changement d'état de la broche
                     
    ****/ 
  
  attachInterrupt(hallPin,increment,FALLING); // Je mesure les fronts descendants
}


void loop() {


 /*
    // Affichage sur l'écran

    u8g2.firstPage();
    do {
      //Affichage  Vitesse sur écran
      u8g2.setFont(u8g2_font_t0_11_tf);//u8g2_font_t0_11_tf
      u8g2.setCursor(0, 20); // ligne 0 ,20e pixels
      u8g2.println("VITESSE");
       delay ( 100);
      u8g2.setFont(u8g2_font_fub14_tf);//u8g2_font_t0_11_tf
      u8g2.setCursor(0, 47);
      u8g2.print(vitessekm_h );
      u8g2.println(" KM/H");
      delay ( 100);
    }
   */
  compteur = 0;                                   //remets à 0 le compteur
  sensorValue = digitalRead(hallPin);             //lis l'état du capteur hall
  sensorValue = not( sensorValue ); // Car le signal du capteur est égal à 0V quand il y a l'aimant
  digitalWrite( ledPin, sensorValue );            //allume la led dès que le capteur capte l'aimant // à supprimer si led à souder
  temps = millis();
  if (millis() - temps > tempspasse) {            //permet de ralentir le temps d'affichage des donnèes au temps qu'on veut (ici 1 seconde)
    Serial.print("KM/H=");
    Serial.println(((compteur * 60 * (1000 / tempspasse)) * (3.14 * 2 )) / 3.6); //affiche la vitesse en prenant en compte le tempspasse
  }
float vitessekm_h = ((compteur * 60 * (1000 / tempspasse)) * (3.14 * 2 )) / 3.6;


  
}
  void increment() {  //la fonction appelé par l'interruption
    compteur += 1;
  }

code erreur :

Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"

D:\Desktop\Romain\Code_arduino\Code_compte_vitesse_et__cran\Code_compte_vitesse_et__cran.ino: In function 'void loop()':

Code_compte_vitesse_et__cran:81: error: expected 'while' before 'compteur'

   compteur = 0;                                   //remets à 0 le compteur

   ^

Code_compte_vitesse_et__cran:81: error: expected '(' before 'compteur'

Code_compte_vitesse_et__cran:81: error: expected ')' before ';' token

   compteur = 0;                                   //remets à 0 le compteur

               ^

Multiple libraries were found for "U8g2lib.h"
 Used: D:\Documents\Arduino\libraries\U8g2_Arduino-master
 Not used: D:\Documents\Arduino\libraries\U8g2
 Not used: D:\Documents\Arduino\libraries\U8g2
 Not used: D:\Documents\Arduino\libraries\U8g2
 Not used: D:\Documents\Arduino\libraries\U8g2
exit status 1
expected 'while' before 'compteur'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Avec u8g2, lorsque tu affiches en utilisant le do, il te faut un while à la fin (voir la doc do / while au besoin)
Donc :

    u8g2.firstPage();
    do {
      //Affichage  Vitesse sur écran
      u8g2.setFont(u8g2_font_t0_11_tf);//u8g2_font_t0_11_tf
      u8g2.setCursor(0, 20); // ligne 0 ,20e pixels
      u8g2.println("VITESSE");
       delay ( 100);
      u8g2.setFont(u8g2_font_fub14_tf);//u8g2_font_t0_11_tf
      u8g2.setCursor(0, 47);
      u8g2.print(vitessekm_h );
      u8g2.println(" KM/H");
      delay ( 100);
    } while ( u8g2.nextPage() );  // <-- ici le while
   */
  compteur = 0;

tu aurais pu (du) trouver tout seul.....

le compilateur te dit

81: error: expected 'while' before 'compteur'

= j'arrive à la ligne 81 et je trouve qu'il manque un while() avant d'arriver à 'compteur'

Un coup d'oeil à la doc et tu vois la syntaxe de do.....while()

Un grand merci pour cette aide aussi rapide.
Bonne soirée