Version paralela con display grande y funciones adicionales

Dependencies:   BufferedSerial mbed

Fork of ConduSe-Speedometer2 by Felícito Manzano

Committer:
fmanzano_dtk
Date:
Tue Aug 30 22:31:44 2016 +0000
Revision:
0:2f13a25aa470
Child:
1:6f4d8d53996f
Version inicial para pruebas.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmanzano_dtk 0:2f13a25aa470 1 /*
fmanzano_dtk 0:2f13a25aa470 2 * - Proyecto: SABMiller ILC
fmanzano_dtk 0:2f13a25aa470 3 Velocímetro digital
fmanzano_dtk 0:2f13a25aa470 4 CONDUSE
fmanzano_dtk 0:2f13a25aa470 5
fmanzano_dtk 0:2f13a25aa470 6 * - Lenguaje: ANSI C/C++ (mbed)
fmanzano_dtk 0:2f13a25aa470 7 * - Tarjeta: Nucleo F303K8
fmanzano_dtk 0:2f13a25aa470 8 * - Referencias:
fmanzano_dtk 0:2f13a25aa470 9 * - Fecha: 2016/Agosto
fmanzano_dtk 0:2f13a25aa470 10 * - Autor(es): Felícito Manzano /
fmanzano_dtk 0:2f13a25aa470 11 Mario Vargas
fmanzano_dtk 0:2f13a25aa470 12 * - Compañia: V.S.R. de Centroamérica
fmanzano_dtk 0:2f13a25aa470 13 * - País: SV / CR
fmanzano_dtk 0:2f13a25aa470 14 */
fmanzano_dtk 0:2f13a25aa470 15
fmanzano_dtk 0:2f13a25aa470 16 #include "mbed.h"
fmanzano_dtk 0:2f13a25aa470 17 #include "BufferedSerial.h"
fmanzano_dtk 0:2f13a25aa470 18 #include "constantes.hpp"
fmanzano_dtk 0:2f13a25aa470 19 #include "ConduSe.h"
fmanzano_dtk 0:2f13a25aa470 20
fmanzano_dtk 0:2f13a25aa470 21 // HARDWARE SETUP
fmanzano_dtk 0:2f13a25aa470 22 //***********************************
fmanzano_dtk 0:2f13a25aa470 23 extern BufferedSerial cp(PA_9, PA_10, BUFF_SIZE, TX_MULTIP);
fmanzano_dtk 0:2f13a25aa470 24 extern DigitalOut display_unidades[7] = {
fmanzano_dtk 0:2f13a25aa470 25 PA_12, PB_0, PB_7, PB_6, PB_1, PF_0, PF_1
fmanzano_dtk 0:2f13a25aa470 26 }; // a, b, c, d, e, f, g
fmanzano_dtk 0:2f13a25aa470 27 extern DigitalOut display_decenas[7] = {
fmanzano_dtk 0:2f13a25aa470 28 PA_8, PA_11, PB_5, PB_4, PA_0, PA_1, PA_3
fmanzano_dtk 0:2f13a25aa470 29 }; // a, b, c, d, e, f, g
fmanzano_dtk 0:2f13a25aa470 30 extern DigitalOut display_centenas[2] = {
fmanzano_dtk 0:2f13a25aa470 31 PA_4, PA_5
fmanzano_dtk 0:2f13a25aa470 32 }; // b, c
fmanzano_dtk 0:2f13a25aa470 33 extern PwmOut myled(LED1); // Buzzer
fmanzano_dtk 0:2f13a25aa470 34 extern RGBLed status_led(PA_2, PA_7, PA_6); // LED RGB
fmanzano_dtk 0:2f13a25aa470 35
fmanzano_dtk 0:2f13a25aa470 36 //
fmanzano_dtk 0:2f13a25aa470 37 //***********************************
fmanzano_dtk 0:2f13a25aa470 38
fmanzano_dtk 0:2f13a25aa470 39 int main()
fmanzano_dtk 0:2f13a25aa470 40 {
fmanzano_dtk 0:2f13a25aa470 41 // CONFIGURAR PUERTOS
fmanzano_dtk 0:2f13a25aa470 42 cp.baud(9600);
fmanzano_dtk 0:2f13a25aa470 43
fmanzano_dtk 0:2f13a25aa470 44 // DECLARACIÓN DE VARIABLES
fmanzano_dtk 0:2f13a25aa470 45 float velocidad_gps_actual = 0.0;
fmanzano_dtk 0:2f13a25aa470 46 float velocidad_gps_previa = -1.0;
fmanzano_dtk 0:2f13a25aa470 47 int centenas = 0;
fmanzano_dtk 0:2f13a25aa470 48 int decenas = 0;
fmanzano_dtk 0:2f13a25aa470 49 int unidades = 0;
fmanzano_dtk 0:2f13a25aa470 50 int bytes_entrantes[35] = {0};
fmanzano_dtk 0:2f13a25aa470 51 int contador_errores = 0;
fmanzano_dtk 0:2f13a25aa470 52 int trama_recibida = 0; // Lógica de código
fmanzano_dtk 0:2f13a25aa470 53 int trama_valida = 0; // Lógica de código
fmanzano_dtk 0:2f13a25aa470 54 iniciar_data_cp(bytes_entrantes);
fmanzano_dtk 0:2f13a25aa470 55 status_led.write(0.0, 0.0, 0.0);
fmanzano_dtk 0:2f13a25aa470 56
fmanzano_dtk 0:2f13a25aa470 57 // Iniciar display con --
fmanzano_dtk 0:2f13a25aa470 58 iniciar_display7s(display_centenas, display_decenas, display_unidades);
fmanzano_dtk 0:2f13a25aa470 59
fmanzano_dtk 0:2f13a25aa470 60 while(1) {
fmanzano_dtk 0:2f13a25aa470 61 // Enviar consulta al CP ConduSe
fmanzano_dtk 0:2f13a25aa470 62 consultar_conduse(&cp);
fmanzano_dtk 0:2f13a25aa470 63
fmanzano_dtk 0:2f13a25aa470 64 // Recibir datos de la trama del CP
fmanzano_dtk 0:2f13a25aa470 65 trama_recibida = recibir_respuesta_conduse(&cp, bytes_entrantes);
fmanzano_dtk 0:2f13a25aa470 66
fmanzano_dtk 0:2f13a25aa470 67 // Procesar trama recibida
fmanzano_dtk 0:2f13a25aa470 68 if (trama_recibida) {
fmanzano_dtk 0:2f13a25aa470 69 trama_valida = validar_trama_conduse(bytes_entrantes);
fmanzano_dtk 0:2f13a25aa470 70
fmanzano_dtk 0:2f13a25aa470 71 if (trama_valida) {
fmanzano_dtk 0:2f13a25aa470 72 extraer_velocidad_conduse(bytes_entrantes,
fmanzano_dtk 0:2f13a25aa470 73 &velocidad_gps_actual);
fmanzano_dtk 0:2f13a25aa470 74
fmanzano_dtk 0:2f13a25aa470 75 if ((velocidad_gps_actual >= CONDUSE_MIN_VEL) &&
fmanzano_dtk 0:2f13a25aa470 76 (velocidad_gps_actual <= CONDUSE_MAX_VEL)) {
fmanzano_dtk 0:2f13a25aa470 77 if (velocidad_gps_actual != velocidad_gps_previa) {
fmanzano_dtk 0:2f13a25aa470 78
fmanzano_dtk 0:2f13a25aa470 79 analizar_velocidad_conduse(&velocidad_gps_actual,
fmanzano_dtk 0:2f13a25aa470 80 &centenas, &decenas, &unidades);
fmanzano_dtk 0:2f13a25aa470 81
fmanzano_dtk 0:2f13a25aa470 82 // Enviar datos a Display
fmanzano_dtk 0:2f13a25aa470 83 /* ************************************************** */
fmanzano_dtk 0:2f13a25aa470 84 // Segmento para prototipo:
fmanzano_dtk 0:2f13a25aa470 85 presentar_velocidad(&centenas, &decenas, &unidades,
fmanzano_dtk 0:2f13a25aa470 86 display_centenas, display_decenas, display_unidades);
fmanzano_dtk 0:2f13a25aa470 87
fmanzano_dtk 0:2f13a25aa470 88 actualizar_led(&velocidad_gps_actual, &myled, &status_led);
fmanzano_dtk 0:2f13a25aa470 89 /* ************************************************** */
fmanzano_dtk 0:2f13a25aa470 90 contador_errores = 0;
fmanzano_dtk 0:2f13a25aa470 91 }
fmanzano_dtk 0:2f13a25aa470 92 } else {
fmanzano_dtk 0:2f13a25aa470 93 contador_errores++;
fmanzano_dtk 0:2f13a25aa470 94 }
fmanzano_dtk 0:2f13a25aa470 95 } else {
fmanzano_dtk 0:2f13a25aa470 96 contador_errores++;
fmanzano_dtk 0:2f13a25aa470 97 }
fmanzano_dtk 0:2f13a25aa470 98 } else {
fmanzano_dtk 0:2f13a25aa470 99 contador_errores++;
fmanzano_dtk 0:2f13a25aa470 100 }
fmanzano_dtk 0:2f13a25aa470 101
fmanzano_dtk 0:2f13a25aa470 102 if (contador_errores>=5) {
fmanzano_dtk 0:2f13a25aa470 103 // Presentar mensaje de error
fmanzano_dtk 0:2f13a25aa470 104 mostrar_error7s(display_centenas, display_decenas, display_unidades);
fmanzano_dtk 0:2f13a25aa470 105 }
fmanzano_dtk 0:2f13a25aa470 106
fmanzano_dtk 0:2f13a25aa470 107 // Limpiar variables
fmanzano_dtk 0:2f13a25aa470 108 iniciar_data_cp(bytes_entrantes);
fmanzano_dtk 0:2f13a25aa470 109 velocidad_gps_previa = velocidad_gps_actual;
fmanzano_dtk 0:2f13a25aa470 110 wait(1); //
fmanzano_dtk 0:2f13a25aa470 111 }
fmanzano_dtk 0:2f13a25aa470 112 }