Para Juan

Dependencies:   NAVDATA RA8875 mbed VCODATA

Revision:
4:9901f6da64b7
Parent:
3:0c9ee19fb976
Child:
5:56d63eaa8415
--- a/main.cpp	Tue Apr 04 06:17:17 2017 +0000
+++ b/main.cpp	Sat Apr 08 18:39:29 2017 +0000
@@ -9,17 +9,14 @@
 #include "BPG_Arial63x63.h"
 
 // Agrego includes para uso en la comunicacion con el gps.
- #include "GPS.h"
- 
- // Agrego includes para la clase NAVDATA que maneja los datos de navegación del último período.
- #include "NAVDATA.h"
- 
- // Agrego includes para la clase VCODATA que maneja los datos de navegación más recientes parametrizados por velocidad de cada período.
+#include "GPS.h"
+// Agrego includes para la clase NAVDATA que maneja los datos de navegación del último período.
+#include "NAVDATA.h"
+// Agrego includes para la clase VCODATA que maneja los datos de navegación más recientes parametrizados por velocidad de cada período.
 #include "VCODATA.h" 
 
- 
- #include <sstream>  //include this to use string streams
- #include <string> 
+#include <sstream>  //include this to use string streams
+#include <string> 
 
 float Counter=0;      //Contador de pulsos del sensor de flujo.
 float LCounter=0;     //Consumo en litros
@@ -29,12 +26,12 @@
 
 
 
-LocalFileSystem local("local");     // Because I want <PrintScreen>
-Serial pc(USBTX, USBRX);            // And a little feedback
+LocalFileSystem local("local");                 // Because I want <PrintScreen>
+Serial pc(USBTX, USBRX);                        // And a little feedback
 
-  RA8875 lcd(p5, p6, p7, p12, NC, "tft");    // MOSI, MISO, SCK, /ChipSelect, /reset, name
+  RA8875 lcd(p5, p6, p7, p12, NC, "tft");       // MOSI, MISO, SCK, /ChipSelect, /reset, name
  
-    void trigger() {                             //Función para la interrupción
+    void trigger() {                            //Función para la interrupción
          Counter++;
          LCounter=Counter/2500;
          //point_t p_cursor = lcd.GetTextCursor();
@@ -46,94 +43,18 @@
     
 int main()
 {
-  
-    
     pc.baud(460800);                            // I like a snappy terminal, so crank it up!
     pc.printf("\r\nRA8875 Soft Fonts - Build " __DATE__ " " __TIME__ "\r\n");
 
     lcd.init();
-    
-
-
-      
-
-       
-    
-    // **************************
+ 
+     // **************************
     //RunTestSet(lcd, pc);  // If the library was compiled for test mode...
     
     lcd.foreground(RGB(255,255,0));     // Seteo del color de las letras.
-    
-    
-    
-    //lcd.puts(0,0, "RA8875 Soft Fonts - Build " __DATE__ " " __TIME__ "\r\n");
-
-    //lcd.SelectUserFont(Dave_Smart18x32);
-    //lcd.puts("**** ! Soft Fonts ! **** 0123456789\r\n");
-    //lcd.puts("ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n");
-    //lcd.puts("abcdefghijklmnopqrstuvwxyz\r\n");
-    //lcd.SelectUserFont();
-    //lcd.puts("Back to normal\r\n");
-    //lcd.SelectUserFont(BPG_Arial08x08);
-    //lcd.puts("BPG_Arial08x08 ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n");
-    //lcd.puts("BPG_Arial08x08 abcdefghijklmnopqrstuvwxyz\r\n");    
-    //lcd.SelectUserFont(BPG_Arial10x10);
-    //lcd.puts("BPG_Arial10x10 ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n");
-    //lcd.puts("BPG_Arial10x10 abcdefghijklmnopqrstuvwxyz\r\n");
-    //lcd.SelectUserFont(BPG_Arial20x20);
-    //lcd.puts("BPG_Arial20x20  ");
-    //lcd.SelectUserFont(BPG_Arial31x32);
-    //lcd.puts("BPG_Arial31x32\r\n");
-    
-     //   lcd.init();
-    //lcd.printf("printing 3 x 2 = %d", 3*2);
-    /*lcd.circle(       400,25,  25,               BrightRed);
-    lcd.fillcircle(   400,25,  15,               RGB(128,255,128));
-    lcd.ellipse(      440,75,  35,20,            BrightBlue);
-    lcd.fillellipse(  440,75,  25,10,            Blue);
-    */
-    
-    /*
-    lcd.SelectUserFont(BPG_Arial63x63);
-    //lcd.puts("BPG_Arial63x63");
-    lcd.puts("                   FIUBA\r\n");
-
-    lcd.puts("------------------------\r\n");
-    lcd.puts("Proyecto SNOCC\r\n");
-    */
-    
-    /*lcd.triangle(     440,100, 475,110, 450,125, Magenta);
-    lcd.filltriangle( 445,105, 467,111, 452,120, Cyan);
-    //lcd.rect(         400,130, 475,155,          Brown);
-    lcd.rect(         170,210, 55,235,          Brown);
-    //lcd.fillrect(     405,135, 470,150,          Pink);
-    lcd.fillrect(     165,215, 60,230,          Pink);
-    //lcd.roundrect(    410,160, 475,190, 10,8,    Yellow);
-    lcd.roundrect(    210,200, 275,230, 10,8,    Green);
-    //lcd.fillroundrect(415,165, 470,185,  5,3,    Orange);
-    lcd.fillroundrect(215,205, 270,225,  5,3,    Yellow);
-    lcd.line(         330,200, 360,230,          RGB(0,255,255));
-    for (int i=0; i<=30; i+=5) 
-        lcd.pixel(335+i,200+i, White);
-    */
-    
-    
-
-
-
-    
-     
     lcd.SelectUserFont(BPG_Arial20x20);     // Seleccion de tipo y tamaño de letras
     //lcd.puts("BPG_Arial63x63");
-/*    lcd.puts("\t\tFIUBA\r\n");
-    lcd.puts("---------------------\r\n");
-    lcd.printf("Contador = %d", Counter);
-    lcd.puts("Proyecto SNOCC");
-    
-    pc.printf("PrintScreen activated ...\r\n");
-    RetCode_t r = lcd.PrintScreen(0,0,480,272,"/sd/file.bmp");
-    pc.printf("  PrintScreen returned %d\r\n", r);
-*/
+
 
            GPS gps(p9, p10);                            // Agrego para comunicacion con el GPS
            
@@ -156,47 +77,23 @@
            // Delay for initial pullup to take effect
             wait(.001);*/
           
- //----------------------------------------------------   
-        
-        
-        // Sensor de flujo:       
+//----------------------------------------------------         
+//      Sensor de flujo:       
 //-----------------------------------------------------
         InterruptIn pulse_sensor(p11);  // Defino pulse_sensor como una entrada de interrupción en p11.
         pulse_sensor.mode(PullUp);      // PullUp para esa entrada.
         //DigitalOut led(LED1);
         pulse_sensor.rise(&trigger);    // Dispara interrupción con flanco ascendente. (Podría tambien ser desecendente--> fall)
         
-       while(1) {
- 
-           
+       
+       
+       
+        while(1) {
+            
            lcd.SetTextCursor(20,0);                      // Pongo cursor en posicion
            lcd.puts("Proyecto SNOCC\r\n");
-
-      
-                
-//int main() {
-              
- //                   }
+           
 
-        
-        
-        
-        
-        
-        
-        
-        //new_pb = pb;
-/*        new_pb = pb.read();
-        //if ((new_pb==0) && (old_pb==1)) count++;
-        if ((!new_pb) && (old_pb)) Counter++;
-        //myled4 = count & 0x01;
-        //myled3 = (count & 0x02)>>1;
-        //myled2 = (count & 0x04)>>2;
-        //myled = (count & 0x08)>>3;
-        old_pb = new_pb;   
-        lcd.SetTextCursor(0,200); 
-        lcd.printf("Flujo %d pulsos", Counter);
-*/
 //-----------------------------------------------------            
         
         //lcd.SetTextCursor(0,20);
@@ -209,52 +106,75 @@
         //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");
             
-            if (NAVIGATION_TABLE.rotate_data(gps.longitude, gps.latitude, gps.time, Counter))
-            lcd.puts("Rotacion exitosa!\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]);
+            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
+            }
             else
+            {
             lcd.puts("Periodo no valido!\r\n");  
-              
-            lcd.SetTextCursor(0,50);            
+            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];     // 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.SetTextCursor(0,80);            
             //lcd.printf("Posicion: %f, %f\r\n", gps.longitude, gps.latitude);
-            lcd.printf("Posicion: %f, %f\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[longitude_f], gps.latitude);     //   $
+            lcd.printf("Posicion: %f, %f\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[longitude_f], NAVIGATION_TABLE.LAST_NAV_DATA[latitude_f]);     //   $
             //lcd.printf("Velocidad %f km/h", gps.speed);
             lcd.printf("Distancia_p %f km\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[distance_p]);
             lcd.printf("Velocidad %f km/h\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[speed_p]);
             lcd.printf("Timetick_i %f h\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[time_i]);
             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.printf("Consumo %f l/km", getConsumo(Count; gps.speed);  */
             lcd.SetTextCursor(0,200); 
-            lcd.printf("Flujo %f Litros/Hora\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[cons_hour_p]);
-            lcd.printf("Flujo %f Litros\r\n", LCounter); 
+            //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); 
             
-        } else {
+            } 
+            else {
             lcd.cls();
             lcd.SetTextCursor(20,0);                      // Pongo cursor en posicion
             lcd.puts("Proyecto SNOCC\r\n");
             lcd.SetTextCursor(0,100);    
-            lcd.printf("No hay datos disponibles :(\n");
+            lcd.printf("No hay datos disponibles :(\r\n");
             lcd.SetTextCursor(0,180);
-            lcd.printf("Timestick %f km/h", NAVIGATION_TABLE.LAST_NAV_DATA[time_f]); 
-            lcd.printf("Flujo %f Litros/Hora\n", NAVIGATION_TABLE.LAST_NAV_DATA[cons_hour_p]);
-            lcd.printf("Flujo %f Litros", LCounter);                
+            lcd.printf("Timestick %f km/h\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[time_f]); 
+            lcd.printf("Flujo %f Litros/Hora\r\n", NAVIGATION_TABLE.LAST_NAV_DATA[cons_hour_p]);
+            lcd.printf("Flujo %f Litros\r\n", LCounter);                
                }
-        
-       }
-       
-       
-       
-       
-/*
-    while(1) {
-        ;       // end
-    }
-*/
-
+    }       
 }
\ No newline at end of file