Electrocardiograma: consiste en monitorear la señal cardia de una persona. Proporcionando el numero de latidos por minuto.

Dependencies:   mbed TextLCD Keypad

Committer:
LeonardoLG
Date:
Fri May 31 00:40:02 2019 +0000
Revision:
0:2e353d06d153
ProyectoECG;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LeonardoLG 0:2e353d06d153 1 /* ###########################################################################
LeonardoLG 0:2e353d06d153 2 ** Archivo : main.c
LeonardoLG 0:2e353d06d153 3 ** Proyecto : FRDM-KL46Z_Plantilla
LeonardoLG 0:2e353d06d153 4 ** Procesador : MKL46Z256VLL4
LeonardoLG 0:2e353d06d153 5 ** Herramienta : Mbed
LeonardoLG 0:2e353d06d153 6 ** Version : Driver 01.01
LeonardoLG 0:2e353d06d153 7 ** Compilador : GNU C Compiler
LeonardoLG 0:2e353d06d153 8 ** Fecha/Hora : 24-05-2019, 00:48, # CodeGen: 0
LeonardoLG 0:2e353d06d153 9 ** Descripción :
LeonardoLG 0:2e353d06d153 10 **
LeonardoLG 0:2e353d06d153 11 ** This Proyect Measures the heart rate in one minute. and shows it on a 20X4 LCD screen.
LeonardoLG 0:2e353d06d153 12 ** Componentes : GPIO, Timer, etc ,DisplayLCD,KeyPad,Dispay 7segmentos,"AD8232 with electrodes for heart".
LeonardoLG 0:2e353d06d153 13 ** Configuraciones : Includes, Stacks y Drivers externos
LeonardoLG 0:2e353d06d153 14 ** Autores :
LeonardoLG 0:2e353d06d153 15 ** ATEAM Development Group:
LeonardoLG 0:2e353d06d153 16 ** -Josué Leonardo López García and
LeonardoLG 0:2e353d06d153 17 ** - Antulio Morgado Valle
LeonardoLG 0:2e353d06d153 18 **
LeonardoLG 0:2e353d06d153 19 ** Versión : Beta
LeonardoLG 0:2e353d06d153 20 ** Revisión : A
LeonardoLG 0:2e353d06d153 21 ** Release : 0
LeonardoLG 0:2e353d06d153 22 ** Bugs & Fixes :
LeonardoLG 0:2e353d06d153 23 ** Date : 24/05/2019
LeonardoLG 0:2e353d06d153 24 ** Added support for Led_RGB
LeonardoLG 0:2e353d06d153 25 ** 22/09/2018
LeonardoLG 0:2e353d06d153 26 ** Added LCD Menu, Beta version (with bugs)
LeonardoLG 0:2e353d06d153 27 **
LeonardoLG 0:2e353d06d153 28 * ###########################################################################/
LeonardoLG 0:2e353d06d153 29
LeonardoLG 0:2e353d06d153 30 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
LeonardoLG 0:2e353d06d153 31 : Includes
LeonardoLG 0:2e353d06d153 32 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
LeonardoLG 0:2e353d06d153 33 */
LeonardoLG 0:2e353d06d153 34 #include "mbed.h"
LeonardoLG 0:2e353d06d153 35 #include "TextLCD.h" //Este archivo contiene la libreria para manipular el DiplayLCD
LeonardoLG 0:2e353d06d153 36 #include "Keypad.h" //Este archivo contiene la libreria para manipular el TecladoMatricial
LeonardoLG 0:2e353d06d153 37 //#include "MyNewTLCD.h" //Este archivo contiene la libreria para dibujar la señal de onda
LeonardoLG 0:2e353d06d153 38 /*
LeonardoLG 0:2e353d06d153 39 :...............................................................................
LeonardoLG 0:2e353d06d153 40 : Definiciones
LeonardoLG 0:2e353d06d153 41 :...............................................................................
LeonardoLG 0:2e353d06d153 42 */
LeonardoLG 0:2e353d06d153 43 #define TRUE 1
LeonardoLG 0:2e353d06d153 44 #define FALSE 0
LeonardoLG 0:2e353d06d153 45
LeonardoLG 0:2e353d06d153 46 /*
LeonardoLG 0:2e353d06d153 47 +-------------------------------------------------------------------------------
LeonardoLG 0:2e353d06d153 48 | Configuración de Puertos
LeonardoLG 0:2e353d06d153 49 +-------------------------------------------------------------------------------
LeonardoLG 0:2e353d06d153 50 */
LeonardoLG 0:2e353d06d153 51 DigitalIn Digital(PTE1); //Confifuracion de una entrada digital
LeonardoLG 0:2e353d06d153 52 DigitalIn Digital1(PTE0);//Confifuracion de una otra entrada digital
LeonardoLG 0:2e353d06d153 53 DigitalOut LedG(LED1);
LeonardoLG 0:2e353d06d153 54 DigitalOut LedR(LED2);
LeonardoLG 0:2e353d06d153 55 BusOut SalidaSeg(PTB18,PTC10,PTC11,PTC7,PTB19,PTC4,PTC6,PTC0);//Confifuracion de la salida de segmentos del Diplay 7Seg
LeonardoLG 0:2e353d06d153 56 BusOut SalidaDig(PTA12,PTD3,PTA2,PTA1);//Confifuracion de la salida de Digitos del Diplay 7Seg
LeonardoLG 0:2e353d06d153 57 TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTB20,PTE30,TextLCD::LCD20x4); // rs, e, d4-d7 Confifuracion de la salida del DiplayLCD y sus datos
LeonardoLG 0:2e353d06d153 58 Keypad TecMat(PTE16,PTE6,PTE3,PTE2,PTE31,PTE19,PTE18,PTE17);//Confifuracion de puertos para el Teclado Matricial
LeonardoLG 0:2e353d06d153 59 DigitalOut gpo(D0);
LeonardoLG 0:2e353d06d153 60 DigitalOut led(LED_RED);
LeonardoLG 0:2e353d06d153 61 AnalogIn A(A0);//Confifuracion de la Entrada Analogica
LeonardoLG 0:2e353d06d153 62 Timer relog; //Timer que fungira como contador en segundos para monitoriar el tiempo
LeonardoLG 0:2e353d06d153 63 /*
LeonardoLG 0:2e353d06d153 64 +-------------------------------------------------------------------------------
LeonardoLG 0:2e353d06d153 65 | Variables Globales de Usuario
LeonardoLG 0:2e353d06d153 66 +-------------------------------------------------------------------------------
LeonardoLG 0:2e353d06d153 67 */
LeonardoLG 0:2e353d06d153 68
LeonardoLG 0:2e353d06d153 69 uint16_t cont_1ms=0,scan_rate=0,counter=500,flag1,flag2,flag3,cont_10ms=0,cont_100ms=0,cont_1s=0;//Declaracion e inicializacion de los contadores y banderas
LeonardoLG 0:2e353d06d153 70 int16_t i=0;
LeonardoLG 0:2e353d06d153 71 uint16_t Digito[]={0x01,0x02,0x04,0x08};//Orden de los Digitos del Display de 7Seg
LeonardoLG 0:2e353d06d153 72 uint16_t Number[]={0x81,0xE7,0x49,0x43,0x27,0x13,0x11,0xC7,0x01,0x03,0xFF};
LeonardoLG 0:2e353d06d153 73 char key; //Variable de tipo caracter que sera designada por el teclado matricial
LeonardoLG 0:2e353d06d153 74 int released=1,tiemp=0,j=0;//inicializacion de variables de las funciones
LeonardoLG 0:2e353d06d153 75 /*
LeonardoLG 0:2e353d06d153 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LeonardoLG 0:2e353d06d153 77 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
LeonardoLG 0:2e353d06d153 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LeonardoLG 0:2e353d06d153 79 */
LeonardoLG 0:2e353d06d153 80
LeonardoLG 0:2e353d06d153 81 //funcion1
LeonardoLG 0:2e353d06d153 82 uint16_t Letra(uint8_t L){ //Funcion encargada de recibir un numero para despues codificarlo y poder ser mostrado en el display de 7Seg
LeonardoLG 0:2e353d06d153 83 if(L=='0')return 0x81;
LeonardoLG 0:2e353d06d153 84 else if(L=='1')return 0xE7;
LeonardoLG 0:2e353d06d153 85 else if(L=='2')return 0x49;
LeonardoLG 0:2e353d06d153 86 else if(L=='3')return 0x43;
LeonardoLG 0:2e353d06d153 87 else if(L=='4')return 0x27;
LeonardoLG 0:2e353d06d153 88 else if(L=='5')return 0x13;
LeonardoLG 0:2e353d06d153 89 else if(L=='6')return 0x11;
LeonardoLG 0:2e353d06d153 90 else if(L=='7')return 0xC7;
LeonardoLG 0:2e353d06d153 91 else if(L=='8')return 0x01;
LeonardoLG 0:2e353d06d153 92 else if(L=='9')return 0x03;
LeonardoLG 0:2e353d06d153 93 else if(L=='A'||L=='a')return 0x05;
LeonardoLG 0:2e353d06d153 94 else if(L=='B'||L=='b')return 0x31;
LeonardoLG 0:2e353d06d153 95 else if(L=='C'||L=='c')return 0x99;
LeonardoLG 0:2e353d06d153 96 else if(L=='D'||L=='d')return 0x61;
LeonardoLG 0:2e353d06d153 97 else if(L=='E'||L=='e')return 0x19;
LeonardoLG 0:2e353d06d153 98 else if(L=='F'||L=='f')return 0x1D;
LeonardoLG 0:2e353d06d153 99 else if(L=='G'||L=='g')return 0x03;
LeonardoLG 0:2e353d06d153 100 else if(L=='H'||L=='h')return 0x25;
LeonardoLG 0:2e353d06d153 101 else if(L=='I'||L=='i')return 0xFD;
LeonardoLG 0:2e353d06d153 102 else if(L=='J'||L=='j')return 0xE1;
LeonardoLG 0:2e353d06d153 103 else if(L=='K'||L=='k')return 0x29;
LeonardoLG 0:2e353d06d153 104 else if(L=='L'||L=='l')return 0xB9;
LeonardoLG 0:2e353d06d153 105 else if(L=='M'||L=='m')return 0x85;
LeonardoLG 0:2e353d06d153 106 else if(L=='N'||L=='n')return 0x75;
LeonardoLG 0:2e353d06d153 107 else if(L=='O'||L=='o')return 0x81;
LeonardoLG 0:2e353d06d153 108 else if(L=='P'||L=='p')return 0x0D;
LeonardoLG 0:2e353d06d153 109 else if(L=='Q'||L=='q')return 0x07;
LeonardoLG 0:2e353d06d153 110 else if(L=='R'||L=='r')return 0x7D;
LeonardoLG 0:2e353d06d153 111 else if(L=='S'||L=='s')return 0x13;
LeonardoLG 0:2e353d06d153 112 else if(L=='T'||L=='t')return 0x39;
LeonardoLG 0:2e353d06d153 113 else if(L=='U'||L=='u')return 0xF1;
LeonardoLG 0:2e353d06d153 114 else if(L=='V'||L=='v')return 0xA1;
LeonardoLG 0:2e353d06d153 115 else if(L=='W'||L=='w')return 0xD1;
LeonardoLG 0:2e353d06d153 116 else if(L=='X'||L=='x')return 0x3D;
LeonardoLG 0:2e353d06d153 117 else if(L=='Y'||L=='y')return 0x23;
LeonardoLG 0:2e353d06d153 118 else if(L=='Z'||L=='z')return 0x5B;
LeonardoLG 0:2e353d06d153 119 else if(L=='-')return 0x7F;
LeonardoLG 0:2e353d06d153 120 else if(L=='=')return 0x7B;
LeonardoLG 0:2e353d06d153 121 else if(L=='.')return 0xFE;
LeonardoLG 0:2e353d06d153 122 else if(L==' ')return 0xFF;
LeonardoLG 0:2e353d06d153 123 else return 0xFF;
LeonardoLG 0:2e353d06d153 124 }
LeonardoLG 0:2e353d06d153 125
LeonardoLG 0:2e353d06d153 126 //funcion2
LeonardoLG 0:2e353d06d153 127 void barrido(){//Funcion que se encarga del barrido del display de 7Seg
LeonardoLG 0:2e353d06d153 128 cont_1ms++;
LeonardoLG 0:2e353d06d153 129 scan_rate++;
LeonardoLG 0:2e353d06d153 130 counter--;
LeonardoLG 0:2e353d06d153 131 if(scan_rate==2)
LeonardoLG 0:2e353d06d153 132 {
LeonardoLG 0:2e353d06d153 133 scan_rate=0;
LeonardoLG 0:2e353d06d153 134 flag1=TRUE;
LeonardoLG 0:2e353d06d153 135 }
LeonardoLG 0:2e353d06d153 136 if(scan_rate==1)
LeonardoLG 0:2e353d06d153 137 {
LeonardoLG 0:2e353d06d153 138 flag3=TRUE;
LeonardoLG 0:2e353d06d153 139 }
LeonardoLG 0:2e353d06d153 140 if (cont_1ms>=10)
LeonardoLG 0:2e353d06d153 141 {
LeonardoLG 0:2e353d06d153 142 cont_10ms++;
LeonardoLG 0:2e353d06d153 143 cont_1ms=0;
LeonardoLG 0:2e353d06d153 144 }
LeonardoLG 0:2e353d06d153 145 if (cont_10ms>=10)
LeonardoLG 0:2e353d06d153 146 {
LeonardoLG 0:2e353d06d153 147 cont_100ms++;
LeonardoLG 0:2e353d06d153 148 cont_10ms=0;
LeonardoLG 0:2e353d06d153 149 }
LeonardoLG 0:2e353d06d153 150 if (cont_100ms>=10)
LeonardoLG 0:2e353d06d153 151 {
LeonardoLG 0:2e353d06d153 152 cont_1s++;
LeonardoLG 0:2e353d06d153 153 cont_100ms=0;
LeonardoLG 0:2e353d06d153 154 }
LeonardoLG 0:2e353d06d153 155 if (cont_1s>=10)
LeonardoLG 0:2e353d06d153 156 {
LeonardoLG 0:2e353d06d153 157 cont_1s=0;
LeonardoLG 0:2e353d06d153 158 }
LeonardoLG 0:2e353d06d153 159 if (!counter)
LeonardoLG 0:2e353d06d153 160 {
LeonardoLG 0:2e353d06d153 161 counter=500;
LeonardoLG 0:2e353d06d153 162 flag2=TRUE;
LeonardoLG 0:2e353d06d153 163 }
LeonardoLG 0:2e353d06d153 164 }
LeonardoLG 0:2e353d06d153 165
LeonardoLG 0:2e353d06d153 166 //funcion3
LeonardoLG 0:2e353d06d153 167
LeonardoLG 0:2e353d06d153 168 void teclado()
LeonardoLG 0:2e353d06d153 169 {//Funcion se encarga de asignar un caracter a la variable key dependiendo del estado del teclado matricial
LeonardoLG 0:2e353d06d153 170 key=TecMat.ReadKey();
LeonardoLG 0:2e353d06d153 171 if(key=='\0')
LeonardoLG 0:2e353d06d153 172 released=1;
LeonardoLG 0:2e353d06d153 173 if((key!='\0') && (released==1))
LeonardoLG 0:2e353d06d153 174 {
LeonardoLG 0:2e353d06d153 175 lcd.printf("%c",key);
LeonardoLG 0:2e353d06d153 176 released=0;
LeonardoLG 0:2e353d06d153 177
LeonardoLG 0:2e353d06d153 178 }
LeonardoLG 0:2e353d06d153 179 }
LeonardoLG 0:2e353d06d153 180
LeonardoLG 0:2e353d06d153 181 //funcion4
LeonardoLG 0:2e353d06d153 182
LeonardoLG 0:2e353d06d153 183 void WelcomToECG(void){
LeonardoLG 0:2e353d06d153 184 //Esta funcion se encarga de dar la bienvenida al ECG y dar instrucciones al usuario para su correcto funcionamiento
LeonardoLG 0:2e353d06d153 185 lcd.cls();
LeonardoLG 0:2e353d06d153 186 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 187 lcd.printf("Bienvenido al ECG.");
LeonardoLG 0:2e353d06d153 188 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 189 lcd.printf("Por favor coloca los");
LeonardoLG 0:2e353d06d153 190 lcd.locate(0,2);
LeonardoLG 0:2e353d06d153 191 lcd.printf("electrodos referente");
LeonardoLG 0:2e353d06d153 192 lcd.locate(0,3);
LeonardoLG 0:2e353d06d153 193 lcd.printf("al triangulo de");wait(5);
LeonardoLG 0:2e353d06d153 194 lcd.cls();
LeonardoLG 0:2e353d06d153 195 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 196 lcd.printf("Eithoven.");wait(3);
LeonardoLG 0:2e353d06d153 197 lcd.cls();
LeonardoLG 0:2e353d06d153 198 lcd.printf("Tiempo de espera: 3 seg.");wait(05);
LeonardoLG 0:2e353d06d153 199 lcd.cls();
LeonardoLG 0:2e353d06d153 200 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 201 lcd.printf("Por favor, mantenga");
LeonardoLG 0:2e353d06d153 202 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 203 lcd.printf("presionada la tecla ");
LeonardoLG 0:2e353d06d153 204 lcd.locate(0,2);
LeonardoLG 0:2e353d06d153 205 lcd.printf("A Si ya tiene");
LeonardoLG 0:2e353d06d153 206 lcd.locate(0,3);
LeonardoLG 0:2e353d06d153 207 lcd.printf("los electrodos ");wait(6);
LeonardoLG 0:2e353d06d153 208 lcd.cls();
LeonardoLG 0:2e353d06d153 209 }
LeonardoLG 0:2e353d06d153 210
LeonardoLG 0:2e353d06d153 211
LeonardoLG 0:2e353d06d153 212 /*
LeonardoLG 0:2e353d06d153 213 #===============================================================================
LeonardoLG 0:2e353d06d153 214 |
LeonardoLG 0:2e353d06d153 215 | P R O G R A M A P R I N C I P A L
LeonardoLG 0:2e353d06d153 216 |
LeonardoLG 0:2e353d06d153 217 #===============================================================================
LeonardoLG 0:2e353d06d153 218 */
LeonardoLG 0:2e353d06d153 219
LeonardoLG 0:2e353d06d153 220 int main()
LeonardoLG 0:2e353d06d153 221 {
LeonardoLG 0:2e353d06d153 222
LeonardoLG 0:2e353d06d153 223 Ticker timer;//Declaracion de un timer usado en el barrido del display
LeonardoLG 0:2e353d06d153 224 timer.attach_us(&barrido,500);
LeonardoLG 0:2e353d06d153 225
LeonardoLG 0:2e353d06d153 226 uint16_t longitud=63;//Se designa una longitud para el mensaje que queremos mostrar
LeonardoLG 0:2e353d06d153 227 int16_t j=0,e=0;
LeonardoLG 0:2e353d06d153 228 while(e<3){//Lazo principal del corrimiento del display el corrimiento solo se hara 2 veces
LeonardoLG 0:2e353d06d153 229 uint8_t Cadena[]="HOLA ESIME ZACATENCO ING EN COMUNICACIONES Y ELECTRONICA ";
LeonardoLG 0:2e353d06d153 230 uint8_t Apaga[]=" ";
LeonardoLG 0:2e353d06d153 231 if (flag1==TRUE){
LeonardoLG 0:2e353d06d153 232 SalidaSeg = Letra(Apaga[0]);
LeonardoLG 0:2e353d06d153 233 SalidaDig = Digito[-i+3];
LeonardoLG 0:2e353d06d153 234 SalidaSeg = Letra(Cadena[i+j-5]);
LeonardoLG 0:2e353d06d153 235
LeonardoLG 0:2e353d06d153 236 i++;
LeonardoLG 0:2e353d06d153 237 if(i==4)i=0;
LeonardoLG 0:2e353d06d153 238 if(j==longitud)j=0;
LeonardoLG 0:2e353d06d153 239 LedR=!LedR;
LeonardoLG 0:2e353d06d153 240 flag1=FALSE;
LeonardoLG 0:2e353d06d153 241
LeonardoLG 0:2e353d06d153 242 }
LeonardoLG 0:2e353d06d153 243 if (flag2==TRUE){
LeonardoLG 0:2e353d06d153 244 LedG=!LedG;
LeonardoLG 0:2e353d06d153 245 flag2=FALSE;
LeonardoLG 0:2e353d06d153 246 j++;
LeonardoLG 0:2e353d06d153 247 }
LeonardoLG 0:2e353d06d153 248 e++;
LeonardoLG 0:2e353d06d153 249 }
LeonardoLG 0:2e353d06d153 250
LeonardoLG 0:2e353d06d153 251
LeonardoLG 0:2e353d06d153 252
LeonardoLG 0:2e353d06d153 253
LeonardoLG 0:2e353d06d153 254 //Inicio del Programa, se muestra en el DisplayLCD
LeonardoLG 0:2e353d06d153 255 Inicio:
LeonardoLG 0:2e353d06d153 256 key=NULL;
LeonardoLG 0:2e353d06d153 257 lcd.printf("ELECTROCARDIOGRAMA");wait(4);
LeonardoLG 0:2e353d06d153 258 lcd.cls();
LeonardoLG 0:2e353d06d153 259 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 260 lcd.printf("Hola!");
LeonardoLG 0:2e353d06d153 261 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 262 lcd.printf("Este dispositivo");
LeonardoLG 0:2e353d06d153 263 lcd.locate(0,2);
LeonardoLG 0:2e353d06d153 264 lcd.printf("mide el ritmo ");
LeonardoLG 0:2e353d06d153 265 lcd.locate(0,3);
LeonardoLG 0:2e353d06d153 266 lcd.printf("cardiaco.");wait(4);
LeonardoLG 0:2e353d06d153 267 lcd.cls();
LeonardoLG 0:2e353d06d153 268 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 269 lcd.printf("Por favor, mantenga");
LeonardoLG 0:2e353d06d153 270 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 271 lcd.printf("presionada la tecla");
LeonardoLG 0:2e353d06d153 272 lcd.locate(0,2);
LeonardoLG 0:2e353d06d153 273 lcd.printf("Por 3 Seg,segun su ");
LeonardoLG 0:2e353d06d153 274 lcd.locate(0,3);
LeonardoLG 0:2e353d06d153 275 lcd.printf("Eleccion ");wait(4);
LeonardoLG 0:2e353d06d153 276 lcd.cls();
LeonardoLG 0:2e353d06d153 277 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 278 lcd.printf("0 Para Salir");
LeonardoLG 0:2e353d06d153 279 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 280 lcd.printf("1 Para Inicio");
LeonardoLG 0:2e353d06d153 281 lcd.locate(0,2);
LeonardoLG 0:2e353d06d153 282 lcd.printf("2 Para Ingresar al ECG");wait(3);
LeonardoLG 0:2e353d06d153 283 lcd.cls();wait(3);
LeonardoLG 0:2e353d06d153 284 teclado();
LeonardoLG 0:2e353d06d153 285
LeonardoLG 0:2e353d06d153 286 while(1)
LeonardoLG 0:2e353d06d153 287 { //Lazo principal si se presiona la tecla '2' Entra al programa para medir el ritmo cardiaco
LeonardoLG 0:2e353d06d153 288 if(key=='2')
LeonardoLG 0:2e353d06d153 289 {
LeonardoLG 0:2e353d06d153 290 WelcomToECG();
LeonardoLG 0:2e353d06d153 291 teclado();
LeonardoLG 0:2e353d06d153 292 if(key=='A') lcd.printf("Detectando Senal cardiaca");wait(3);
LeonardoLG 0:2e353d06d153 293 lcd.cls();
LeonardoLG 0:2e353d06d153 294
LeonardoLG 0:2e353d06d153 295 for(int i=0;relog.read()<=60;i++)//Incializacion del timer para que empiece en 0 seg y termine en 60seg/1minuto
LeonardoLG 0:2e353d06d153 296 {
LeonardoLG 0:2e353d06d153 297 if(i==0)//nos aseguramos que este en 0seg
LeonardoLG 0:2e353d06d153 298 relog.start(); //empieza a contar
LeonardoLG 0:2e353d06d153 299 if(Digital==1||Digital1==1)//Condicion de entradas digitales "las entradas estan sicronizadas y son complementarias, es decir si una es 1 la otra es 0"
LeonardoLG 0:2e353d06d153 300 j++;//Cuenta los pulsos e incrementa en un minuto, segun los pulso que hayan recibido las entradas digitales
LeonardoLG 0:2e353d06d153 301 }
LeonardoLG 0:2e353d06d153 302 lcd.cls();
LeonardoLG 0:2e353d06d153 303 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 304 lcd.printf("tiempo:%f",relog.read());wait(4);//muestra el tiempo que tardo en ejecutarse en segundos
LeonardoLG 0:2e353d06d153 305 lcd.cls();
LeonardoLG 0:2e353d06d153 306 lcd.locate(0,0);
LeonardoLG 0:2e353d06d153 307 lcd.printf("Ritmo Cardiaco:%d",j);//Muestra cuantos 1 logicos detecto en un minuto, equivalente a los ritmos cardiacos
LeonardoLG 0:2e353d06d153 308 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 309 lcd.printf("Latidos/minuto");
LeonardoLG 0:2e353d06d153 310 }
LeonardoLG 0:2e353d06d153 311
LeonardoLG 0:2e353d06d153 312
LeonardoLG 0:2e353d06d153 313
LeonardoLG 0:2e353d06d153 314
LeonardoLG 0:2e353d06d153 315 else if(key=='0')//Si la variable key='0' sale del programa
LeonardoLG 0:2e353d06d153 316 {
LeonardoLG 0:2e353d06d153 317 lcd.locate(0,1);
LeonardoLG 0:2e353d06d153 318 lcd.printf("Hasta Luego");
LeonardoLG 0:2e353d06d153 319 lcd.locate(0,2);
LeonardoLG 0:2e353d06d153 320 lcd.printf("Un gusto servirle :)");
LeonardoLG 0:2e353d06d153 321 wait(3);
LeonardoLG 0:2e353d06d153 322 lcd.cls();
LeonardoLG 0:2e353d06d153 323
LeonardoLG 0:2e353d06d153 324 exit(-1);
LeonardoLG 0:2e353d06d153 325 }
LeonardoLG 0:2e353d06d153 326 else if(key=='1')
LeonardoLG 0:2e353d06d153 327 { //Si la variable key='1' redirecciona el programa a la parte de codigo denominada "Inicio"
LeonardoLG 0:2e353d06d153 328 lcd.cls();
LeonardoLG 0:2e353d06d153 329 lcd.cls();
LeonardoLG 0:2e353d06d153 330 goto Inicio;
LeonardoLG 0:2e353d06d153 331 }
LeonardoLG 0:2e353d06d153 332
LeonardoLG 0:2e353d06d153 333 key=NULL; //Se borra el contenido de la variable key para no ocacionar problemas posteriores
LeonardoLG 0:2e353d06d153 334 }
LeonardoLG 0:2e353d06d153 335 //Fin del programa
LeonardoLG 0:2e353d06d153 336 }
LeonardoLG 0:2e353d06d153 337 /* END main */
LeonardoLG 0:2e353d06d153 338 /*
LeonardoLG 0:2e353d06d153 339 ____________________________
LeonardoLG 0:2e353d06d153 340 |
LeonardoLG 0:2e353d06d153 341 | Funciones Prototipo
LeonardoLG 0:2e353d06d153 342 |___________________________
LeonardoLG 0:2e353d06d153 343 */
LeonardoLG 0:2e353d06d153 344
LeonardoLG 0:2e353d06d153 345
LeonardoLG 0:2e353d06d153 346 uint16_t Letra(uint8_t L);
LeonardoLG 0:2e353d06d153 347 void barrido(void);
LeonardoLG 0:2e353d06d153 348 void teclado(void);
LeonardoLG 0:2e353d06d153 349 void WelcomToECG(void);
LeonardoLG 0:2e353d06d153 350
LeonardoLG 0:2e353d06d153 351
LeonardoLG 0:2e353d06d153 352
LeonardoLG 0:2e353d06d153 353
LeonardoLG 0:2e353d06d153 354
LeonardoLG 0:2e353d06d153 355