Para Juan
Dependencies: NAVDATA RA8875 mbed VCODATA
Diff: main.cpp
- Revision:
- 4:9901f6da64b7
- Parent:
- 3:0c9ee19fb976
- Child:
- 5:56d63eaa8415
diff -r 0c9ee19fb976 -r 9901f6da64b7 main.cpp --- 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