Este el código en Arduino que calcula la dirección
int ADCvalue; // lectura de la tension
static int ADCvalues[] = {66, 84, 92, 127, 184, 244, 287, 406, 461, 600, 631, 702, 786, 827, 889, 946 };
static float vaneDirections[] = {112.5, 67.5, 90.0, 157.5, 135.0, 202.5, 180.0, 22.5, 45.0, 247.5, 225.0, 337.5, 0.0, 292.5, 315.0, 270.0};
float ADCtoDirection(int ADCvalue)
{
for(int n=0; n<16;n++)
{
// valor intermedio
if(ADCvalue < ( ADCvalues[n] + ( (ADCvalues[n+1] - ADCvalues[n]) / 2) ) )
return vaneDirections[n];
}
Serial.print("ADCtoDirection error, ADCvalue: ");
Serial.println( ADCvalue);
return -1.0;
}