Buenas,
Puedes declarar una variable con el valor previo en un scope global de tu programa.
http://arduino.cc/en/Reference/scope
De esta forma, podrás comparar el valor existente con el nuevo valor de rumbo y actuar en consecuencia.
Código C:
Ver original#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
/* Compatibilizacion Unificada de identidad de sensores */
Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
/* Valor existente */
int existing_heading = 0;
void setup(void)
{
Serial.begin(9600);
/* Inicializacion de sensores*/
if(!mag.begin())
{
/* Comprobacion de cableado */
Serial.println("Bueno… :No detecto el sensor...Comprobar cables !");
while(1);
}
}
void loop(void)
{
/* Detectar evento del sensor*/
sensors_event_t event;
mag.getEvent(&event);
float Pi = 3.14159;
// Calcular angulo de vectores X,Y
int heading
= (atan2(event.
magnetic.
y,event.
magnetic.
x) * 180) / Pi
;
// Normalizar angulo de 0-360
if (heading < 0)
{
heading = 360 + heading;
}
//Logica a incluir
if(existing_heading == XXX && heading = YYY) {
//TODO
}
Serial.print("RUMBO: ");
Serial.println(heading);
//Actualizamos heading existente
existing_heading = heading;
delay(500);
}
Un saludo