Pensez-vous que mon programme va marcher?

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.