Là tu mélanges float et long. Autant dire que les chiffres après la virgule ne sont pas pris en compte
cm2 = inches * 2.54;
Tous le code après le return ne sera pas exécuté
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
for(int i = 0; i < avgrange ; i++)
{
anVolt = analogRead(maxsonar)/2;
sum += anVolt;
delay(10);
}
......
Après pour le reste le code est tellement bien commenté qu'on ne sait pas trop ou tu veux en venir.
il y a quand même un truc bizarre avec cm et cm2.
Pas trop compris le logique de la fonction microsecondsToCentimeters qui en fait plus que ce que son nom indique.