Reconocimiento de teclas, Control SONY se iluminan leds con la tecla indicada, Power, CH+, CH-
Dependencies: Pulse1 TextLCD mbed
main.cpp@0:59d03f6b5b6e, 2014-05-22 (annotated)
- Committer:
- walterg
- Date:
- Thu May 22 23:41:49 2014 +0000
- Revision:
- 0:59d03f6b5b6e
Tarea_6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
walterg | 0:59d03f6b5b6e | 1 | // Walter Giraldo Gonzalez |
walterg | 0:59d03f6b5b6e | 2 | // Gregorio Velasquez Gomez |
walterg | 0:59d03f6b5b6e | 3 | |
walterg | 0:59d03f6b5b6e | 4 | #include "mbed.h" |
walterg | 0:59d03f6b5b6e | 5 | #include <Pulse1.h> |
walterg | 0:59d03f6b5b6e | 6 | #include "TextLCD.h" |
walterg | 0:59d03f6b5b6e | 7 | |
walterg | 0:59d03f6b5b6e | 8 | |
walterg | 0:59d03f6b5b6e | 9 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7#include "TextLCD.h" |
walterg | 0:59d03f6b5b6e | 10 | //control remoto videobeam aula |
walterg | 0:59d03f6b5b6e | 11 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
walterg | 0:59d03f6b5b6e | 12 | DigitalOut led(LED1); |
walterg | 0:59d03f6b5b6e | 13 | DigitalOut led2(LED2); |
walterg | 0:59d03f6b5b6e | 14 | DigitalOut led3(LED3); |
walterg | 0:59d03f6b5b6e | 15 | |
walterg | 0:59d03f6b5b6e | 16 | int header =2470; //tiempo de cabecera pulso abajo |
walterg | 0:59d03f6b5b6e | 17 | const int head_H = 2470+247; //+10% medida con osciloscopio en microsegundos |
walterg | 0:59d03f6b5b6e | 18 | const int head_L = 2470-247;//-10% medida con osciloscopio |
walterg | 0:59d03f6b5b6e | 19 | const int Te=400; |
walterg | 0:59d03f6b5b6e | 20 | int i=0; |
walterg | 0:59d03f6b5b6e | 21 | const int T_alto=1270;//1630;//ponga su tiempo de la prueba |
walterg | 0:59d03f6b5b6e | 22 | const int T_bajo=667;//533;//ponga su tiempo de la prueba |
walterg | 0:59d03f6b5b6e | 23 | const int num_bits = 16;//ponga su numero de bits |
walterg | 0:59d03f6b5b6e | 24 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
walterg | 0:59d03f6b5b6e | 25 | |
walterg | 0:59d03f6b5b6e | 26 | int Tecla=0; |
walterg | 0:59d03f6b5b6e | 27 | const int power=54; |
walterg | 0:59d03f6b5b6e | 28 | const int CHA=28; |
walterg | 0:59d03f6b5b6e | 29 | const int CHB=40; |
walterg | 0:59d03f6b5b6e | 30 | |
walterg | 0:59d03f6b5b6e | 31 | int dato; // tiempo de cada dato que se lee |
walterg | 0:59d03f6b5b6e | 32 | |
walterg | 0:59d03f6b5b6e | 33 | int main() |
walterg | 0:59d03f6b5b6e | 34 | { |
walterg | 0:59d03f6b5b6e | 35 | |
walterg | 0:59d03f6b5b6e | 36 | led=1; |
walterg | 0:59d03f6b5b6e | 37 | led2=1; |
walterg | 0:59d03f6b5b6e | 38 | led3=1; |
walterg | 0:59d03f6b5b6e | 39 | while(1) |
walterg | 0:59d03f6b5b6e | 40 | { |
walterg | 0:59d03f6b5b6e | 41 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 42 | lcd.locate(0,0); |
walterg | 0:59d03f6b5b6e | 43 | lcd.printf("PRESIONE BOTON"); |
walterg | 0:59d03f6b5b6e | 44 | |
walterg | 0:59d03f6b5b6e | 45 | ini1: fflush( stdin ); |
walterg | 0:59d03f6b5b6e | 46 | header=0; |
walterg | 0:59d03f6b5b6e | 47 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header |
walterg | 0:59d03f6b5b6e | 48 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
walterg | 0:59d03f6b5b6e | 49 | else goto ini1; |
walterg | 0:59d03f6b5b6e | 50 | |
walterg | 0:59d03f6b5b6e | 51 | seguir: |
walterg | 0:59d03f6b5b6e | 52 | //leo los datos de la trama y se meten a un arreglo |
walterg | 0:59d03f6b5b6e | 53 | wait_us(2417);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO |
walterg | 0:59d03f6b5b6e | 54 | //led2=0; |
walterg | 0:59d03f6b5b6e | 55 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 56 | Tecla=0; |
walterg | 0:59d03f6b5b6e | 57 | for(i=0;i<(num_bits-1);++i) |
walterg | 0:59d03f6b5b6e | 58 | { // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
walterg | 0:59d03f6b5b6e | 59 | dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control |
walterg | 0:59d03f6b5b6e | 60 | num[i]=dato; |
walterg | 0:59d03f6b5b6e | 61 | wait_us(Te); |
walterg | 0:59d03f6b5b6e | 62 | } |
walterg | 0:59d03f6b5b6e | 63 | wait(0.3); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla |
walterg | 0:59d03f6b5b6e | 64 | |
walterg | 0:59d03f6b5b6e | 65 | for(i=0;i<(num_bits-1);++i) |
walterg | 0:59d03f6b5b6e | 66 | { |
walterg | 0:59d03f6b5b6e | 67 | |
walterg | 0:59d03f6b5b6e | 68 | if(num[i] > ((T_alto+T_bajo)/2)) |
walterg | 0:59d03f6b5b6e | 69 | { |
walterg | 0:59d03f6b5b6e | 70 | Tecla=Tecla+ (2^(i));// ecuación que me caracterizara cada tecla es un acumulado el cual podre usar para comparar |
walterg | 0:59d03f6b5b6e | 71 | } |
walterg | 0:59d03f6b5b6e | 72 | |
walterg | 0:59d03f6b5b6e | 73 | } |
walterg | 0:59d03f6b5b6e | 74 | if(Tecla==power) //Comparación de el acumulado "tecla ", con el acumulado que tiene la tecla power que corresponde a la tecla POWER |
walterg | 0:59d03f6b5b6e | 75 | { led=!led; |
walterg | 0:59d03f6b5b6e | 76 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 77 | lcd.printf("POWER"); |
walterg | 0:59d03f6b5b6e | 78 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 79 | lcd.printf("Acumulado=%d",Tecla); |
walterg | 0:59d03f6b5b6e | 80 | wait(2); |
walterg | 0:59d03f6b5b6e | 81 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 82 | lcd.locate(0,0); |
walterg | 0:59d03f6b5b6e | 83 | lcd.printf("HH:%d",head_H); |
walterg | 0:59d03f6b5b6e | 84 | lcd.locate(8,0); |
walterg | 0:59d03f6b5b6e | 85 | lcd.printf("Tby:%d",Te); |
walterg | 0:59d03f6b5b6e | 86 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 87 | lcd.printf("HL:%d",head_L); |
walterg | 0:59d03f6b5b6e | 88 | lcd.locate(8,1); |
walterg | 0:59d03f6b5b6e | 89 | lcd.printf("Nby:%d",num_bits); |
walterg | 0:59d03f6b5b6e | 90 | wait(2); |
walterg | 0:59d03f6b5b6e | 91 | Tecla=0; |
walterg | 0:59d03f6b5b6e | 92 | } |
walterg | 0:59d03f6b5b6e | 93 | if(Tecla==CHA) |
walterg | 0:59d03f6b5b6e | 94 | { |
walterg | 0:59d03f6b5b6e | 95 | led2=!led2; |
walterg | 0:59d03f6b5b6e | 96 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 97 | lcd.printf("Boton CH +"); |
walterg | 0:59d03f6b5b6e | 98 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 99 | lcd.printf("Acumulado=%d",Tecla); |
walterg | 0:59d03f6b5b6e | 100 | wait(2); |
walterg | 0:59d03f6b5b6e | 101 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 102 | lcd.locate(0,0); |
walterg | 0:59d03f6b5b6e | 103 | lcd.printf("HH:%d",head_H); |
walterg | 0:59d03f6b5b6e | 104 | lcd.locate(8,0); |
walterg | 0:59d03f6b5b6e | 105 | lcd.printf("Tby:%d",Te); |
walterg | 0:59d03f6b5b6e | 106 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 107 | lcd.printf("HL:%d",head_L); |
walterg | 0:59d03f6b5b6e | 108 | lcd.locate(8,1); |
walterg | 0:59d03f6b5b6e | 109 | lcd.printf("Nby:%d",num_bits); |
walterg | 0:59d03f6b5b6e | 110 | Tecla=0; |
walterg | 0:59d03f6b5b6e | 111 | wait(2); |
walterg | 0:59d03f6b5b6e | 112 | } |
walterg | 0:59d03f6b5b6e | 113 | if(Tecla==CHB) |
walterg | 0:59d03f6b5b6e | 114 | { |
walterg | 0:59d03f6b5b6e | 115 | |
walterg | 0:59d03f6b5b6e | 116 | led3=!led3; |
walterg | 0:59d03f6b5b6e | 117 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 118 | lcd.printf("Boton CH -"); |
walterg | 0:59d03f6b5b6e | 119 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 120 | lcd.printf("Acumulado=%d",Tecla); |
walterg | 0:59d03f6b5b6e | 121 | wait(2); |
walterg | 0:59d03f6b5b6e | 122 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 123 | lcd.locate(0,0); |
walterg | 0:59d03f6b5b6e | 124 | lcd.printf("HH:%d",head_H); |
walterg | 0:59d03f6b5b6e | 125 | lcd.locate(8,0); |
walterg | 0:59d03f6b5b6e | 126 | lcd.printf("Tby:%d",Te); |
walterg | 0:59d03f6b5b6e | 127 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 128 | lcd.printf("HL:%d",head_L); |
walterg | 0:59d03f6b5b6e | 129 | lcd.locate(8,1); |
walterg | 0:59d03f6b5b6e | 130 | lcd.printf("Nby:%d",num_bits); |
walterg | 0:59d03f6b5b6e | 131 | Tecla=0; |
walterg | 0:59d03f6b5b6e | 132 | wait(2); |
walterg | 0:59d03f6b5b6e | 133 | } |
walterg | 0:59d03f6b5b6e | 134 | if ((Tecla!=CHB)&&(Tecla!=CHA)&&(Tecla!=power)&&(Tecla!=0)){ |
walterg | 0:59d03f6b5b6e | 135 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 136 | lcd.printf("Boton incorrecto"); |
walterg | 0:59d03f6b5b6e | 137 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 138 | lcd.printf("Acumulado=%d",Tecla); |
walterg | 0:59d03f6b5b6e | 139 | wait(2); |
walterg | 0:59d03f6b5b6e | 140 | lcd.cls(); |
walterg | 0:59d03f6b5b6e | 141 | lcd.locate(0,0); |
walterg | 0:59d03f6b5b6e | 142 | lcd.printf("HH:%d",head_H); |
walterg | 0:59d03f6b5b6e | 143 | lcd.locate(8,0); |
walterg | 0:59d03f6b5b6e | 144 | lcd.printf("Tby:%d",Te); |
walterg | 0:59d03f6b5b6e | 145 | lcd.locate(0,1); |
walterg | 0:59d03f6b5b6e | 146 | lcd.printf("HL:%d",head_L); |
walterg | 0:59d03f6b5b6e | 147 | lcd.locate(8,1); |
walterg | 0:59d03f6b5b6e | 148 | lcd.printf("Nby:%d",num_bits); |
walterg | 0:59d03f6b5b6e | 149 | Tecla=0; |
walterg | 0:59d03f6b5b6e | 150 | wait(2);} |
walterg | 0:59d03f6b5b6e | 151 | } |
walterg | 0:59d03f6b5b6e | 152 | } |