Version paralela con display grande y funciones adicionales

Dependencies:   BufferedSerial mbed

Fork of ConduSe-Speedometer2 by Felícito Manzano

Revision:
1:6f4d8d53996f
Parent:
0:2f13a25aa470
Child:
2:1219ed8d7039
--- a/main.cpp	Tue Aug 30 22:31:44 2016 +0000
+++ b/main.cpp	Wed Aug 31 18:42:25 2016 +0000
@@ -21,17 +21,23 @@
 // HARDWARE SETUP
 //***********************************
 extern BufferedSerial cp(PA_9, PA_10, BUFF_SIZE, TX_MULTIP);
+//>>>>>>>> extern Serial usb(USBTX, USBRX);
+
 extern DigitalOut display_unidades[7] = {
-    PA_12, PB_0, PB_7, PB_6, PB_1, PF_0, PF_1
-}; // a, b, c, d, e, f, g
+       PB_6, PB_1, PF_0, PF_1, PA_8, PA_11, PB_5
+       }; // a, b, c, d, e, f, g
+
 extern DigitalOut display_decenas[7] = {
-    PA_8, PA_11, PB_5, PB_4, PA_0, PA_1, PA_3
-}; // a, b, c, d, e, f, g
+       PA_7, PA_6, PA_5, PA_4, PA_3, PA_1, PA_0
+       }; // a, b, c, d, e, f, g
+
 extern DigitalOut display_centenas[2] = {
-    PA_4, PA_5
-}; // b, c
-extern PwmOut myled(LED1);                  // Buzzer
-extern RGBLed status_led(PA_2, PA_7, PA_6); // LED RGB
+       PA_2, PB_4
+       }; // b, c
+
+extern RGBLed status_led(PA_12, PB_0, PB_7); // LED RGB
+extern DigitalOut myled(LED1);               // Buzzer
+
 
 //
 //***********************************
@@ -40,10 +46,11 @@
 {
     // CONFIGURAR PUERTOS
     cp.baud(9600);
+    //>>>>>>>> usb.baud(115200);
+    //>>>>>>>> usb.printf("INICIO!\r\n\r\n");
 
     // DECLARACIÓN DE VARIABLES
     float velocidad_gps_actual = 0.0;
-    float velocidad_gps_previa = -1.0;
     int centenas = 0;
     int decenas = 0;
     int unidades = 0;
@@ -52,7 +59,7 @@
     int trama_recibida = 0;     // Lógica de código
     int trama_valida = 0;       // Lógica de código
     iniciar_data_cp(bytes_entrantes);
-    status_led.write(0.0, 0.0, 0.0);
+    status_led.write(1.0, 1.0, 1.0);
     
     // Iniciar display con --
     iniciar_display7s(display_centenas, display_decenas, display_unidades);
@@ -63,50 +70,57 @@
 
         // Recibir datos de la trama del CP
         trama_recibida = recibir_respuesta_conduse(&cp, bytes_entrantes);
-
+        
+        
         // Procesar trama recibida
         if (trama_recibida) {
+            //>>>>>>>> usb.printf("Trama recibida - OK\r\n"); wait_ms(50);
             trama_valida = validar_trama_conduse(bytes_entrantes);
 
             if (trama_valida) {
+                //>>>>>>>> usb.printf("Trama valida - OK\r\n"); wait_ms(50);
                 extraer_velocidad_conduse(bytes_entrantes,
                                           &velocidad_gps_actual);
 
                 if ((velocidad_gps_actual >= CONDUSE_MIN_VEL) &&
                     (velocidad_gps_actual <= CONDUSE_MAX_VEL)) {
-                    if (velocidad_gps_actual != velocidad_gps_previa) {
-                        
-                        analizar_velocidad_conduse(&velocidad_gps_actual,
-                        &centenas, &decenas, &unidades);
                         
-                        // Enviar datos a Display
-                        /* ************************************************** */
-                        // Segmento para prototipo:
-                        presentar_velocidad(&centenas, &decenas, &unidades,
-                        display_centenas, display_decenas, display_unidades);
+                    analizar_velocidad_conduse(&velocidad_gps_actual,
+                    &centenas, &decenas, &unidades);
+                    //>>>>>>>> usb.printf("Velocidad: %d %d %d\r\n", centenas, decenas, unidades); wait_ms(50);
+                    
+                    // Enviar datos a Display
+                    /* ************************************************** */
+                    // Segmento para prototipo:
+                    presentar_velocidad(&centenas, &decenas, &unidades, display_centenas, display_decenas, display_unidades);
                         
-                        actualizar_led(&velocidad_gps_actual, &myled, &status_led);
-                        /* ************************************************** */
-                        contador_errores = 0;
-                    }
+                    actualizar_led(&velocidad_gps_actual, &myled, &status_led);
+                    /* ************************************************** */
+                    contador_errores = 0;
+                    
                 } else {
+                    //>>>>>>>> usb.printf("Velocidad fuera de rango - ERROR\r\n"); wait_ms(50);
                     contador_errores++;
                 }
             } else {
+                //>>>>>>>> usb.printf("Trama valida - ERROR\r\n"); wait_ms(50);
                 contador_errores++;
             }
         } else {
+            //>>>>>>>> usb.printf("Trama recibida - ERROR\r\n"); wait_ms(50);
             contador_errores++;
         }
 
         if (contador_errores>=5) {
             // Presentar mensaje de error
+            //>>>>>>>> usb.printf("Display7s -> EEE\r\n"); wait_ms(50);
             mostrar_error7s(display_centenas, display_decenas, display_unidades);
+            status_led.write(1.0, 1.0, 1.0);
         }
 
         // Limpiar variables
         iniciar_data_cp(bytes_entrantes);
-        velocidad_gps_previa = velocidad_gps_actual;
+        myled = !myled;
         wait(1); //
     }
 }
\ No newline at end of file