Hola surbyte..
Cierto que me equivoqué en la operacion.. aunque creo que el concepto lo entendiste..
El codigo que tengo es este:
float rumboGrados = (rumboRadianes * 180/M_PI);
float declinacionmag = (-4.86 + (26.0 / 60.0)) / (180 / M_PI); // -4.86 LPA
float rumbofinal = rumboGrados += declinacionmag;
Serial.print(" Rumbo: ");
Serial.print(rumbofinal);
int estadoBoton = digitalRead(pinBoton);
if (estadoBoton == HIGH){
guardado = rumbofinal;
}
float desvio = rumbofinal - guardado;
if(desvio < 180) desvio += 360;
if(desvio > 180) desvio -= 360;
Serial.print(" Error: ");
Serial.println(desvio);
primero obtengo "rumboGrados" de radianes
luego lo corrijo por la "declinacionmag" en mi zona y lo llamo "rumbofinal" presentandolo..
y en el "if" compruebo si el boton esta pulsado para almacenar "guardado"="rumbofinal"
a continuacion creo "desvio" de la diferencia entre "rumbofinal"-"guardado"
y a partir de ahí hago las operaciones de caculo que dije y aparentemente sale todo bien
Probaré con tus datos aunque a estas horas tengo la neurona hecha polvo..
Saludos y muchas gracias...