Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/08/2014, 13:18
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 9 meses
Puntos: 182
Respuesta: Codigo para comparar valores

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
  1. #include <Wire.h>
  2. #include <Adafruit_Sensor.h>
  3. #include <Adafruit_LSM303_U.h>
  4.  
  5. /* Compatibilizacion Unificada de identidad de sensores */
  6. Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);
  7. Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
  8.  
  9. /* Valor existente */
  10. int existing_heading = 0;
  11.  
  12. void setup(void)
  13. {
  14.   Serial.begin(9600);
  15.  
  16.   /* Inicializacion de sensores*/
  17.   if(!mag.begin())
  18.   {
  19.     /* Comprobacion de cableado */
  20.     Serial.println("Bueno… :No detecto el sensor...Comprobar cables !");
  21.     while(1);
  22.   }
  23. }
  24.  
  25. void loop(void)
  26. {
  27.   /* Detectar evento del sensor*/
  28.   sensors_event_t event;
  29.   mag.getEvent(&event);
  30.  
  31.   float Pi = 3.14159;
  32.  
  33.   // Calcular angulo de vectores X,Y
  34.   int heading = (atan2(event.magnetic.y,event.magnetic.x) * 180) / Pi;
  35.  
  36.   // Normalizar angulo de 0-360
  37.   if (heading < 0)
  38.   {
  39.     heading = 360 + heading;
  40.   }
  41.  
  42.   //Logica a incluir
  43.   if(existing_heading == XXX && heading = YYY) {
  44.      //TODO
  45.   }
  46.   Serial.print("RUMBO: ");
  47.  
  48.   Serial.println(heading);
  49.  
  50.  //Actualizamos heading existente
  51.  existing_heading = heading;
  52.   delay(500);
  53. }


Un saludo