Convertire variabile in nome

Piuttosto che usare i float, se proprio ti servono i mezzi gradi, usa gli int moltiplicando i gradi per 10! Esempio:

byte dir=(head+225)/450;
if(dir==8) dir=0;

Vedo che nel tuo codice c'è già:

int trovaIndice(float angolo)
{
  int _index;
  for (_index=0; _index<8; _index++)
  {
    float angoloDirezione = _index*45.0+22.50;
    float angoloMin = angoloDirezione-22.50;
    float angoloMax = angoloDirezione+22.50;
    if (angolo>=angoloMin && angolo<=angoloMax)
      return _index;
  }
  return _index;
}

Con angolo da 0 a 3599 anziché da 0 a 359,9 diventerebbe:

byte trovaIndice(int angolo)
{
  return (angolo+225)/450.0+0.5; // .0 e +0.5, se vuoi, sono per l'arrotondamento.
}

ma a quel punto puoi usare direttamente la formula, senza metterla in una funzione.