Réalisation d'un afficheur de vitesse pour voiture

Salut,

Je viens de lire un peu tout ça, et ayant déjà pas mal planché sur ce genre de projet, quelques choses m'embête un peu...

Tu dis avoir une demi période de 10ms pour 40km/h, ce qui donnerait une impulsion tous les 22,222222... cm parcourus. Chez Renault (et certainement beaucoup d'autres), les capteurs vitesse utilisés sont donnés à une impulsion pour 20cm parcourus (ou encore 5 impulsions par mètre). Je pense que c'est ton cas (ça donne une erreur de 11% dans tes mesures, c'est possible). Par ailleurs, ce signal est très précis, donc mieux vaut être précis autant que possible.

Pour la mesure, j'utiliserais une méthode très différente, car l'arduino propose une fonction matérielle super puissante : "ICP1". Matériel veut dire que la gestion est purement électronique, aucun (ou presque) code n'intervient.

En gros, sur la pin 8, tu mets ton signal info vitesse, et avec un peu de config, chaque impulsion viendra mettre la variable vitesse à jour en utilisant une interruption. ICP (Input Capture Pin) a pour but de sauvegarder la valeur d'un compteur à chaque impulsion. Ce compteur est le timer 1 qu'il te suffit de configurer pour qu'il compte en continu, à une fréquence optimale (ça demande à réfléchir un peu, mais ça vaut largement le coup).

Tu pourras donc dans ton loop() faire simplement :

byte vitesse; // variable contenant la vitesse mesurée
void loop() {
  lcd.print(vitesse);
  delay(100); // mise à jour sur le LCD 10 fois par secondes, si trop rapide, ce sera illisible
}

Sachant que tu auras une ISR (Interrupt Sub Routine : fonction d'interruption) qui sera appelée à chaque impulsion et qui mettra à jour la variable vitesse.

Bonus : si tu utilises par exemple une variable de type long (long distance; par exemple), dans l'ISR, tu peux rajouter la ligne "distance++;". Ca mange pas de pain, mais du coup, tu auras un totaliseur kilométrique précis à 20cm... (kilométrage = distance / 5000;).

Ce n'est qu'une idée, mais j'aurais fait comme ça, car niveau exécution, c'est top et ça permet de rajouter un max de fonctions par la suite!