Compteur de vitesse trottinette

Bonjour à tous !

Je suis nouveau sur la communauté Arduino et souhaiterai que vous m'éclaireriez un peu.
Dans le cadre de mes études, j'ai un projet assez simple à réaliser, je dois faire un compteur de vitesse pour trottinette électrique. Seulement le problème, c'est que je n'ai jamais coder... et je peux pas vraiment compter sur mon professeur, qui est pas mal occupé avec d'autres élèves, et pour rien
arranger, je dois le terminer rapidement.
Je m'en remet donc à vous pour m'apporter votre aide. Je n'ai pas énormément de matériel, je dois faire le code sur une Arduino Uno (Board Model Uno R3), et je dispose d'un capteur magnétique (Magnetic Sensor V2), un petit aimant, et un écran (Grove-LCD RGB Backlist V2.0).
Je vous fais pas un dessin sur le principe, le capteur est sur la fourche de la trottinette, l'aimant est sur la roue, quand l'aimant passe devant le capteur, ma variable de distance doit s'incrémenter du périmètre de la roue ( soit 8.8 cm ). Je dois afficher sur l'écran le nombre de tours fait, la distance totale, le temps écoulé et enfin la vitesse. C'est sur la vitesse que je bloque, je ne sais pas vraiment quoi ni comment faire.

Je vous met le code que j'ai commencé à faire. Si il y a une partie
avec une LED, c'est parce que de base la LED devait s'allumer lorsque
le capteur était à l'état haut, c'est plus pour l'avoir comme support
qu'autre chose.

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 255;

const int pinCapteur = 3;
const int pinLed = 7;
int nombrePassage = 0;
double distancetotale = 0;

void setup()
{
  pinMode(pinCapteur, INPUT);

  pinMode(pinLed, OUTPUT);

  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);
}

void loop()
{    
  if(digitalRead(pinCapteur))
  {
    digitalWrite(pinLed, HIGH);
    delay(1);
    nombrePassage++;
    distancetotale = distancetotale + 0.088;
  }
  else
  {
    digitalWrite(pinLed, LOW);
  }
   lcd.setCursor(9, 0);
   lcd.print(millis()/1000);  
   
   lcd.setCursor(0, 1);
   lcd.print(distancetotale);
   
   lcd.setCursor(0, 0);
   lcd.print(nombrePassage);

   delay(200);
 }

Voilà, merci de votre aide et bonne journée

Le calcul d'une vitesse se calcule... comme une vitesse ! km/h est une unité de vitesse : "kilomètres par heure" en gros, combien de Km peuvent être parcourus en une heure...
Il te faut donc diviser une distance par un temps, ta distance c'est le périmètre de la roue de ta trottinette, le temps bein... c'est le temps entre deux mesures... pour mesurer le temps, t'as la fonction millis() par exemple...

Bonjour et merci à toi de répondre rapidement !
Je sais comment faire le calcul, ce que je n'arrive pas c'est la partie d'avant. Je pense devoir faire deux variables de temps, une première variable qui garde une valeur fixe et une seconde qui doit prendre une valeur après un certain temps, et à peu près la même chose pour la distance, mais là encore la vitesse doit être affichée de manière continue ... Je suis un peu perdu.
Merci de votre aide.

déjà millis() ne s'utilise pas comme tu fais, regarde ce tuto, comme ca tu auras une base de temps cohérente. En gros, un peu comme tu dis, il te faut connaître le temps entre deux mesures, pas le temps total depuis que t'as allumé ton arduino...

Une fois que tu réussiras à calculer la vitesse instantanée (entre deux mesures) tu vas certainement avoir quelque chose qui varie un peu trop, dans ce cas tu peux lisser ton résultat pour éviter qu'il n'ait la bougeotte. Ce que je fais personnellement c'est un tableau circulaire avec la mesure et le temps, j'ajoute toutes les valeurs et je fais la vitesse moyenne sur une durée plus raisonnable comme toutes les 100ms, plus t'augmenteras la durée plus t'auras du retard (latence) entre la vitesse réelle et celle affichée/calculée.

Je te remercie, je regarderai ton lien dans la journée. Pour le millis(), c'était mon prof qui m'avait dit de faire comme ça, et j'avais regardé dans les exemples disponible sur Arduino.
Je sais pas si je vais comme toi, ça m'as l'air un peu compliqué pour moi ...
En tout cas merci, je reposterai si besoin est,
Bonne journée

Essaie déjà d'obtenir une vitesse cohérente, après tu verras si t'as besoin de lisser ou pas...