Para Juan
Dependencies: NAVDATA RA8875 mbed VCODATA
Diff: main.cpp
- 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);