Reconocimiento de voz

Dependencies:   TextLCD mbed

Committer:
dpadiernav
Date:
Thu Nov 30 14:49:07 2017 +0000
Revision:
0:de2dfdf9b4f6
.

Who changed what in which revision?

UserRevisionLine numberNew 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