![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Reconocimiento de voz
main.cpp@0:de2dfdf9b4f6, 2017-11-30 (annotated)
- Committer:
- dpadiernav
- Date:
- Thu Nov 30 14:49:07 2017 +0000
- Revision:
- 0:de2dfdf9b4f6
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dpadiernav | 0:de2dfdf9b4f6 | 1 | #include "mbed.h" |
dpadiernav | 0:de2dfdf9b4f6 | 2 | #include "stdio.h" |
dpadiernav | 0:de2dfdf9b4f6 | 3 | #include "string.h" |
dpadiernav | 0:de2dfdf9b4f6 | 4 | #include "TextLCD.h" |
dpadiernav | 0:de2dfdf9b4f6 | 5 | |
dpadiernav | 0:de2dfdf9b4f6 | 6 | DigitalOut rojo(LED1); // R |
dpadiernav | 0:de2dfdf9b4f6 | 7 | DigitalOut verde(LED2); // G |
dpadiernav | 0:de2dfdf9b4f6 | 8 | DigitalOut azul(LED3); // B |
dpadiernav | 0:de2dfdf9b4f6 | 9 | |
dpadiernav | 0:de2dfdf9b4f6 | 10 | Serial usart(PTA2,PTA1); //puertos del FRDM para el modem |
dpadiernav | 0:de2dfdf9b4f6 | 11 | Serial pc(USBTX,USBRX); |
dpadiernav | 0:de2dfdf9b4f6 | 12 | |
dpadiernav | 0:de2dfdf9b4f6 | 13 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
dpadiernav | 0:de2dfdf9b4f6 | 14 | |
dpadiernav | 0:de2dfdf9b4f6 | 15 | Timer tiempo; // Variable para contar |
dpadiernav | 0:de2dfdf9b4f6 | 16 | |
dpadiernav | 0:de2dfdf9b4f6 | 17 | int selector; |
dpadiernav | 0:de2dfdf9b4f6 | 18 | |
dpadiernav | 0:de2dfdf9b4f6 | 19 | char buffer[4]; |
dpadiernav | 0:de2dfdf9b4f6 | 20 | |
dpadiernav | 0:de2dfdf9b4f6 | 21 | int readBuffer(char *buffer,int count); |
dpadiernav | 0:de2dfdf9b4f6 | 22 | void cleanBuffer(char *buffer, int count); |
dpadiernav | 0:de2dfdf9b4f6 | 23 | int reconocerColor(char *buffer); |
dpadiernav | 0:de2dfdf9b4f6 | 24 | |
dpadiernav | 0:de2dfdf9b4f6 | 25 | //esta funcion lee un bufer de datos |
dpadiernav | 0:de2dfdf9b4f6 | 26 | int readBuffer(char *buffer,int count){ |
dpadiernav | 0:de2dfdf9b4f6 | 27 | |
dpadiernav | 0:de2dfdf9b4f6 | 28 | int i=0; |
dpadiernav | 0:de2dfdf9b4f6 | 29 | tiempo.start(); //CUENTA EL TIEMPO DE CONEXION E INICIA |
dpadiernav | 0:de2dfdf9b4f6 | 30 | while(1) { |
dpadiernav | 0:de2dfdf9b4f6 | 31 | while (usart.readable()) { |
dpadiernav | 0:de2dfdf9b4f6 | 32 | char c = usart.getc(); |
dpadiernav | 0:de2dfdf9b4f6 | 33 | if (c == '\r' || c == '\n') c = '%';//si se envia fin de linea o de caracxter inserta $ |
dpadiernav | 0:de2dfdf9b4f6 | 34 | buffer[i++] = c;//mete al bufer el caracter leido |
dpadiernav | 0:de2dfdf9b4f6 | 35 | if(i > count)break;//sale del loop si ya detecto terminacion |
dpadiernav | 0:de2dfdf9b4f6 | 36 | } |
dpadiernav | 0:de2dfdf9b4f6 | 37 | if(i > count)break; |
dpadiernav | 0:de2dfdf9b4f6 | 38 | if(tiempo.read() > 0.5) { //MAS DE UN SEGUNDO DE ESPERA SE SALE Y REINICA EL RELOJ Y SE SALE |
dpadiernav | 0:de2dfdf9b4f6 | 39 | tiempo.stop(); |
dpadiernav | 0:de2dfdf9b4f6 | 40 | tiempo.reset(); |
dpadiernav | 0:de2dfdf9b4f6 | 41 | break; |
dpadiernav | 0:de2dfdf9b4f6 | 42 | } |
dpadiernav | 0:de2dfdf9b4f6 | 43 | } |
dpadiernav | 0:de2dfdf9b4f6 | 44 | return 0; |
dpadiernav | 0:de2dfdf9b4f6 | 45 | } |
dpadiernav | 0:de2dfdf9b4f6 | 46 | |
dpadiernav | 0:de2dfdf9b4f6 | 47 | //esta funcion limpia el bufer |
dpadiernav | 0:de2dfdf9b4f6 | 48 | void cleanBuffer(char *buffer, int count){ |
dpadiernav | 0:de2dfdf9b4f6 | 49 | |
dpadiernav | 0:de2dfdf9b4f6 | 50 | for(int i=0; i < count; i++) { |
dpadiernav | 0:de2dfdf9b4f6 | 51 | buffer[i] = '\0'; |
dpadiernav | 0:de2dfdf9b4f6 | 52 | } |
dpadiernav | 0:de2dfdf9b4f6 | 53 | |
dpadiernav | 0:de2dfdf9b4f6 | 54 | } |
dpadiernav | 0:de2dfdf9b4f6 | 55 | |
dpadiernav | 0:de2dfdf9b4f6 | 56 | int reconocerColor (char *buffer){ |
dpadiernav | 0:de2dfdf9b4f6 | 57 | |
dpadiernav | 0:de2dfdf9b4f6 | 58 | int opcion; |
dpadiernav | 0:de2dfdf9b4f6 | 59 | switch(buffer[0]){ |
dpadiernav | 0:de2dfdf9b4f6 | 60 | case 'R': opcion = 1; break; |
dpadiernav | 0:de2dfdf9b4f6 | 61 | case 'G': opcion = 2; break; |
dpadiernav | 0:de2dfdf9b4f6 | 62 | case 'B': opcion = 3; break; |
dpadiernav | 0:de2dfdf9b4f6 | 63 | case 'A': opcion = 4; break; |
dpadiernav | 0:de2dfdf9b4f6 | 64 | default : opcion = 0; break; |
dpadiernav | 0:de2dfdf9b4f6 | 65 | } |
dpadiernav | 0:de2dfdf9b4f6 | 66 | return opcion; |
dpadiernav | 0:de2dfdf9b4f6 | 67 | |
dpadiernav | 0:de2dfdf9b4f6 | 68 | } |
dpadiernav | 0:de2dfdf9b4f6 | 69 | |
dpadiernav | 0:de2dfdf9b4f6 | 70 | int main() { |
dpadiernav | 0:de2dfdf9b4f6 | 71 | |
dpadiernav | 0:de2dfdf9b4f6 | 72 | usart.baud(9600); |
dpadiernav | 0:de2dfdf9b4f6 | 73 | usart.format(8,Serial::None,1); |
dpadiernav | 0:de2dfdf9b4f6 | 74 | rojo = 1; |
dpadiernav | 0:de2dfdf9b4f6 | 75 | verde = 1; |
dpadiernav | 0:de2dfdf9b4f6 | 76 | azul = 1; |
dpadiernav | 0:de2dfdf9b4f6 | 77 | |
dpadiernav | 0:de2dfdf9b4f6 | 78 | while(1){ |
dpadiernav | 0:de2dfdf9b4f6 | 79 | |
dpadiernav | 0:de2dfdf9b4f6 | 80 | while (usart.readable()){ |
dpadiernav | 0:de2dfdf9b4f6 | 81 | |
dpadiernav | 0:de2dfdf9b4f6 | 82 | readBuffer(buffer, 7); |
dpadiernav | 0:de2dfdf9b4f6 | 83 | pc.printf("buffer= %s \n\r ",buffer); |
dpadiernav | 0:de2dfdf9b4f6 | 84 | selector = reconocerColor(buffer); |
dpadiernav | 0:de2dfdf9b4f6 | 85 | pc.printf("opcion= %u \n\r ",selector); |
dpadiernav | 0:de2dfdf9b4f6 | 86 | switch(selector){ |
dpadiernav | 0:de2dfdf9b4f6 | 87 | case 1: |
dpadiernav | 0:de2dfdf9b4f6 | 88 | rojo = 0; verde = 1; azul =1; |
dpadiernav | 0:de2dfdf9b4f6 | 89 | lcd.cls(); |
dpadiernav | 0:de2dfdf9b4f6 | 90 | lcd.printf("ROJO\n"); |
dpadiernav | 0:de2dfdf9b4f6 | 91 | break; |
dpadiernav | 0:de2dfdf9b4f6 | 92 | case 2: |
dpadiernav | 0:de2dfdf9b4f6 | 93 | rojo = 1; verde = 0; azul =1; |
dpadiernav | 0:de2dfdf9b4f6 | 94 | lcd.cls(); |
dpadiernav | 0:de2dfdf9b4f6 | 95 | lcd.printf("VERDE\n"); |
dpadiernav | 0:de2dfdf9b4f6 | 96 | break; |
dpadiernav | 0:de2dfdf9b4f6 | 97 | case 3: |
dpadiernav | 0:de2dfdf9b4f6 | 98 | rojo = 1; verde = 1; azul =0; |
dpadiernav | 0:de2dfdf9b4f6 | 99 | lcd.cls(); |
dpadiernav | 0:de2dfdf9b4f6 | 100 | lcd.printf("AZUL\n"); |
dpadiernav | 0:de2dfdf9b4f6 | 101 | break; |
dpadiernav | 0:de2dfdf9b4f6 | 102 | case 4: |
dpadiernav | 0:de2dfdf9b4f6 | 103 | rojo = 0; verde = 0; azul =0; |
dpadiernav | 0:de2dfdf9b4f6 | 104 | lcd.cls(); |
dpadiernav | 0:de2dfdf9b4f6 | 105 | lcd.printf("BLANCO\n"); |
dpadiernav | 0:de2dfdf9b4f6 | 106 | break; |
dpadiernav | 0:de2dfdf9b4f6 | 107 | default: break; |
dpadiernav | 0:de2dfdf9b4f6 | 108 | } |
dpadiernav | 0:de2dfdf9b4f6 | 109 | |
dpadiernav | 0:de2dfdf9b4f6 | 110 | } |
dpadiernav | 0:de2dfdf9b4f6 | 111 | |
dpadiernav | 0:de2dfdf9b4f6 | 112 | } |
dpadiernav | 0:de2dfdf9b4f6 | 113 | |
dpadiernav | 0:de2dfdf9b4f6 | 114 | } |
dpadiernav | 0:de2dfdf9b4f6 | 115 | |
dpadiernav | 0:de2dfdf9b4f6 | 116 |