Para Juan

Dependencies:   NAVDATA RA8875 mbed VCODATA

Revision:
5:56d63eaa8415
Parent:
4:9901f6da64b7
Child:
6:aebb3a0a040c
diff -r 9901f6da64b7 -r 56d63eaa8415 main.cpp
--- a/main.cpp	Sat Apr 08 18:39:29 2017 +0000
+++ b/main.cpp	Sat Apr 08 22:36:56 2017 +0000
@@ -39,7 +39,37 @@
          //lcd.printf("Flujo %d pulsos", Counter);
          //lcd.SetTextCursor(p_cursor);
          }
- // float getConsumo(int , int velocidad){
+ /* Funcion  print_VCO_curve : Imprime la curva de consumo/milla en funcion de la velocidad a partir del vector de objetos NAV_DATA de la clase VCODATA.*/
+
+    void print_VCO_curve(VCODATA Matrix_VCO){
+        int s,y,z;
+        for (int x=0;x<100;x++){
+        s = Matrix_VCO.NAV_DATA[x].LAST_NAV_DATA[cons_mile_p];
+        y=200-2*s;  // el consumo máximo es alrededor de 100 l/m. Multiplico por 2 para que ocupe mas pantalla.
+        z=x*4;      // para aumentar el span (eje x)
+        lcd.SetTextCursor(z,y);         
+        //lcd.printf("%d",x);
+        lcd.printf(".");
+        }
+    }
+
+
+/* Funcion build_test_Mtrx: Carga los datos del vector LAST_NAV_DATA de los objetos NAVDATA de VCODATA para testing.*/
+
+void   build_test_Mtrx(VCODATA Test_Matrix_VCO){
+       NAVDATA TestNDO;
+       for (int i=0;i<50;i++){
+        TestNDO.LAST_NAV_DATA[cons_mile_p]=i;
+        TestNDO.LAST_NAV_DATA[speed_p]=i;
+        Test_Matrix_VCO.store_data(TestNDO);
+        }
+        for (int i=50,x=50;i>0;i--,x++){
+        TestNDO.LAST_NAV_DATA[cons_mile_p]=i;
+        TestNDO.LAST_NAV_DATA[speed_p]=x;
+        Test_Matrix_VCO.store_data(TestNDO);
+        }
+     }   
+
     
 int main()
 {
@@ -90,8 +120,8 @@
        
         while(1) {
             
-           lcd.SetTextCursor(20,0);                      // Pongo cursor en posicion
-           lcd.puts("Proyecto SNOCC\r\n");
+            lcd.SetTextCursor(0,0);                      // Pongo cursor en posicion
+            lcd.puts(">>>>>>>>>>>>>< Proyecto SNOCC ><<<<<<<<<<<<<<\r\n");
            
 
 //-----------------------------------------------------            
@@ -106,30 +136,32 @@
         //lcd.printf("Contador = %d", Counter);
          
         if(gps.sample()) {             // Si es exitosa la obtencion de datos del gps.
-            
             lcd.cls();
-                    
-            lcd.SetTextCursor(20,0);                      // Pongo cursor en posicion
-            lcd.puts("Proyecto SNOCC\r\n");
+            lcd.SetTextCursor(0,0);                      // Pongo cursor en posicion
+            lcd.puts(">>>>>>>>>>>>>< Proyecto SNOCC ><<<<<<<<<<<<<<\r\n");
             
             if (NAVIGATION_TABLE.rotate_data(gps.longitude, gps.latitude, gps.time, Counter)){
             NAVIGATION_VMATRIX.store_data(NAVIGATION_TABLE);// Luego de rotar los datos en la tabla de navegacion, la guarda en la matriz, 
                                                             // en el lugar correspondiente a la velocidad del preiodo (por ahora reemplaza...ver otras opciones)
-            lcd.puts("Rotacion exitosa!\r\n");
-            int i=int(NAVIGATION_TABLE.LAST_NAV_DATA[speed_p]);
+            
+            lcd.puts("Rotacion exitosa!-->");
+            int i=int(NAVIGATION_TABLE.LAST_NAV_DATA[speed_p]);                         
             float timetick_f_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[time_f];           // DEBUG
             float distance_p_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[distance_p];       // DEBUG
             float speed_p_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[speed_p];             // DEBUG
             float longitude_f_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[longitude_f];     // DEBUG
             float latitude_f_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[latitude_f];       // DEBUG
             float cons_hour_p_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[cons_hour_p];
-            lcd.printf("Algunos datos guardados en la Matriz: \r\n");                               // DEBUG
-            lcd.printf("INDICE_Mtrx: %d (Parte entera de speed)\r\n", i);                           // DEBUG
-            lcd.printf("Speed_f_Mtrx: %f kn.\r\n", speed_p_Mtrx);                                   // DEBUG
-            lcd.printf("Time_f_Mtrx: %f Hours.\r\n", timetick_f_Mtrx);                              // DEBUG
-            lcd.printf("Distance_p_Mtrx: %f miles.\r\n",distance_p_Mtrx);                           // DEBUG
-            lcd.printf("Posicion: Long: %f, Lat: %f\r\n",longitude_f_Mtrx,latitude_f_Mtrx);         // DEBUG
-            lcd.printf("FlujoVCOmtrx %f Litros/Hora\r\n", cons_hour_p_Mtrx);                        // DEBUG
+            //lcd.printf("Algunos datos guardados en la Matriz: \r\n");                               // DEBUG
+            lcd.printf("INDICE_Mtrx: %d\r\n",i);                            // DEBUG
+            /*lcd.printf("Speed_f_Mtrx(%d): %f kn.\r\n",i, speed_p_Mtrx);                             // DEBUG
+            lcd.printf("Time_f_Mtrx(%d): %f Hours.\r\n",i, timetick_f_Mtrx);                        // DEBUG
+            lcd.printf("Distance_p_Mtrx(%d): %f miles.\r\n",i,distance_p_Mtrx);                     // DEBUG
+            lcd.printf("Posicion: Long(%d): %f, Lat: %f\r\n",i,longitude_f_Mtrx,latitude_f_Mtrx);   // DEBUG
+            lcd.printf("FlujoVCOmtrx(%d): %f Litros/Hora\r\n",i, cons_hour_p_Mtrx);                 // DEBUG
+            */
+            build_test_Mtrx(NAVIGATION_VMATRIX);    // DEBUG Curve
+            print_VCO_curve(NAVIGATION_VMATRIX);
             }
             else
             {
@@ -142,12 +174,12 @@
             float latitude_f_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[latitude_f];       // DEBUG
             float cons_hour_p_Mtrx = NAVIGATION_VMATRIX.NAV_DATA[i].LAST_NAV_DATA[cons_hour_p];     // DEBUG
             lcd.printf("Algunos datos guardados en la Matriz: \r\n");                               // DEBUG
-            lcd.printf("INDICE_Mtrx: %d (Parte entera de speed)\r\n", i);                           // DEBUG
-            lcd.printf("Speed_f_Mtrx: %f kn.\r\n", speed_p_Mtrx);                                   // DEBUG
-            lcd.printf("Time_f_Mtrx: %f Hours.\r\n", timetick_f_Mtrx);                              // DEBUG
-            lcd.printf("Distance_p_Mtrx: %f miles.\r\n",distance_p_Mtrx);                           // DEBUG
-            lcd.printf("Posicion: Long: %f, Lat: %f\r\n",longitude_f_Mtrx,latitude_f_Mtrx);         // DEBUG
-            lcd.printf("FlujoVCOmtrx %f Litros/Hora\r\n", cons_hour_p_Mtrx);                        // DEBUG
+            lcd.printf("INDICE_Mtrx: %d (Parte entera de speed)\r\n",i);                            // DEBUG
+            lcd.printf("Speed_f_Mtrx(%d): %f kn.\r\n",i, speed_p_Mtrx);                             // DEBUG
+            lcd.printf("Time_f_Mtrx(%d): %f Hours.\r\n",i, timetick_f_Mtrx);                        // DEBUG
+            lcd.printf("Distance_p_Mtrx(%d): %f miles.\r\n",i,distance_p_Mtrx);                     // DEBUG
+            lcd.printf("Posicion: Long(%d): %f, Lat: %f\r\n",i,longitude_f_Mtrx,latitude_f_Mtrx);   // DEBUG
+            lcd.printf("FlujoVCOmtrx(%d): %f Litros/Hora\r\n",i, cons_hour_p_Mtrx);                 // DEBUG
               }
            /* lcd.SetTextCursor(0,80);            
             //lcd.printf("Posicion: %f, %f\r\n", gps.longitude, gps.latitude);
@@ -159,16 +191,16 @@
             lcd.printf("Timetick_f %f h\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[time_f]);
             lcd.printf("Timetick_gps %f NMEA\r\n", gps.time);
  //            lcd.printf("Consumo %f l/km", getConsumo(Count; gps.speed);  */
-            lcd.SetTextCursor(0,200); 
+            //lcd.SetTextCursor(0,220); 
             //lcd.printf("Flujo %f Litros/Hora\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[cons_hour_p]);
             //lcd.printf("FlujoVCOmtrx %f Litros/Hora\r\n", cons_hour_p_Mtrx);
-            lcd.printf("Flujo acumulado (Tomado directamente del contador):%f Litros\r\n", LCounter); 
+            //lcd.printf("Flujo acumulado (contador):%f Litros\r\n", LCounter); 
             
             } 
             else {
             lcd.cls();
-            lcd.SetTextCursor(20,0);                      // Pongo cursor en posicion
-            lcd.puts("Proyecto SNOCC\r\n");
+            lcd.SetTextCursor(0,0);                      // Pongo cursor en posicion
+            lcd.puts(">>>>>>>>>>>>>< Proyecto SNOCC ><<<<<<<<<<<<<<\r\n");
             lcd.SetTextCursor(0,100);    
             lcd.printf("No hay datos disponibles :(\r\n");
             lcd.SetTextCursor(0,180);