Version paralela con display grande y funciones adicionales
Dependencies: BufferedSerial mbed
Fork of ConduSe-Speedometer2 by
main.cpp
- Committer:
- fmanzano_dtk
- Date:
- 2016-08-30
- Revision:
- 0:2f13a25aa470
- Child:
- 1:6f4d8d53996f
File content as of revision 0:2f13a25aa470:
/* * - Proyecto: SABMiller ILC Velocímetro digital CONDUSE * - Lenguaje: ANSI C/C++ (mbed) * - Tarjeta: Nucleo F303K8 * - Referencias: * - Fecha: 2016/Agosto * - Autor(es): Felícito Manzano / Mario Vargas * - Compañia: V.S.R. de Centroamérica * - País: SV / CR */ #include "mbed.h" #include "BufferedSerial.h" #include "constantes.hpp" #include "ConduSe.h" // HARDWARE SETUP //*********************************** extern BufferedSerial cp(PA_9, PA_10, BUFF_SIZE, TX_MULTIP); 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 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 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 // //*********************************** int main() { // CONFIGURAR PUERTOS cp.baud(9600); // 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; int bytes_entrantes[35] = {0}; int contador_errores = 0; 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); // Iniciar display con -- iniciar_display7s(display_centenas, display_decenas, display_unidades); while(1) { // Enviar consulta al CP ConduSe consultar_conduse(&cp); // Recibir datos de la trama del CP trama_recibida = recibir_respuesta_conduse(&cp, bytes_entrantes); // Procesar trama recibida if (trama_recibida) { trama_valida = validar_trama_conduse(bytes_entrantes); if (trama_valida) { 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, ¢enas, &decenas, &unidades); // Enviar datos a Display /* ************************************************** */ // Segmento para prototipo: presentar_velocidad(¢enas, &decenas, &unidades, display_centenas, display_decenas, display_unidades); actualizar_led(&velocidad_gps_actual, &myled, &status_led); /* ************************************************** */ contador_errores = 0; } } else { contador_errores++; } } else { contador_errores++; } } else { contador_errores++; } if (contador_errores>=5) { // Presentar mensaje de error mostrar_error7s(display_centenas, display_decenas, display_unidades); } // Limpiar variables iniciar_data_cp(bytes_entrantes); velocidad_gps_previa = velocidad_gps_actual; wait(1); // } }