![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
por medio de un control remoto y tres de sus botones se enciende un led diferente con cada botón, se muestra el numero de bits, su código, tiempo de duración de la cabecera y tiempos de duración en unos y ceros.
Dependencies: Pulse1 TextLCD mbed
main.cpp@0:0239a53cf648, 2014-05-16 (annotated)
- Committer:
- lopjohn_26
- Date:
- Fri May 16 15:42:27 2014 +0000
- Revision:
- 0:0239a53cf648
control remoto y botones
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lopjohn_26 | 0:0239a53cf648 | 1 | #include "mbed.h" |
lopjohn_26 | 0:0239a53cf648 | 2 | #include <Pulse1.h> |
lopjohn_26 | 0:0239a53cf648 | 3 | #include "TextLCD.h" |
lopjohn_26 | 0:0239a53cf648 | 4 | |
lopjohn_26 | 0:0239a53cf648 | 5 | // |
lopjohn_26 | 0:0239a53cf648 | 6 | //JUAN ESTEBAN alcance a realizar algo más del codigo mientras estaba en el hospital, el codigo ademas de apagar y prender el led, |
lopjohn_26 | 0:0239a53cf648 | 7 | //muestra el codigo del boton y el numero de bits. |
lopjohn_26 | 0:0239a53cf648 | 8 | |
lopjohn_26 | 0:0239a53cf648 | 9 | //control remoto |
lopjohn_26 | 0:0239a53cf648 | 10 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
lopjohn_26 | 0:0239a53cf648 | 11 | Serial pc(USBTX, USBRX); |
lopjohn_26 | 0:0239a53cf648 | 12 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); //Puertos LCD rs, e, d4, d5, d6, d7 |
lopjohn_26 | 0:0239a53cf648 | 13 | |
lopjohn_26 | 0:0239a53cf648 | 14 | DigitalOut led3(LED3); |
lopjohn_26 | 0:0239a53cf648 | 15 | DigitalOut led4(LED2); // aqui se configuran las salidas donde a donde se conectan los leds |
lopjohn_26 | 0:0239a53cf648 | 16 | DigitalOut led5(LED1); |
lopjohn_26 | 0:0239a53cf648 | 17 | |
lopjohn_26 | 0:0239a53cf648 | 18 | int header =0; //tiempo de cabecera pulso abajo |
lopjohn_26 | 0:0239a53cf648 | 19 | const int head_H = 2860; //+10% medida con osciloscopio en microsegundos |
lopjohn_26 | 0:0239a53cf648 | 20 | const int head_L = 2340;//-10% medida con osciloscopio |
lopjohn_26 | 0:0239a53cf648 | 21 | int i=0; |
lopjohn_26 | 0:0239a53cf648 | 22 | const int T_alto=1370;//ponga su tiempo de la prueba |
lopjohn_26 | 0:0239a53cf648 | 23 | const int T_bajo=733;//ponga su tiempo de la prueba |
lopjohn_26 | 0:0239a53cf648 | 24 | const int num_bits = 7;//ponga su numero de bits |
lopjohn_26 | 0:0239a53cf648 | 25 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
lopjohn_26 | 0:0239a53cf648 | 26 | int numb[num_bits]; // cadena para almacenar los bits |
lopjohn_26 | 0:0239a53cf648 | 27 | int num1[] = {1,0,1,0,1,0,0}; |
lopjohn_26 | 0:0239a53cf648 | 28 | int num2[] = {0,1,1,0,1,1,0}; // aqui se configura la trama de bit que representa al boton 1, 2 y 3. |
lopjohn_26 | 0:0239a53cf648 | 29 | int num3[] = {0,0,1,0,1,0,0}; |
lopjohn_26 | 0:0239a53cf648 | 30 | |
lopjohn_26 | 0:0239a53cf648 | 31 | int suma1=0; |
lopjohn_26 | 0:0239a53cf648 | 32 | int suma2=0; |
lopjohn_26 | 0:0239a53cf648 | 33 | int suma3=0; |
lopjohn_26 | 0:0239a53cf648 | 34 | int s1t, s2t; |
lopjohn_26 | 0:0239a53cf648 | 35 | |
lopjohn_26 | 0:0239a53cf648 | 36 | int dato; // tiempo de cada dato que se lee |
lopjohn_26 | 0:0239a53cf648 | 37 | |
lopjohn_26 | 0:0239a53cf648 | 38 | |
lopjohn_26 | 0:0239a53cf648 | 39 | int main(){ |
lopjohn_26 | 0:0239a53cf648 | 40 | |
lopjohn_26 | 0:0239a53cf648 | 41 | led3=1; |
lopjohn_26 | 0:0239a53cf648 | 42 | led4=1; |
lopjohn_26 | 0:0239a53cf648 | 43 | led5=1; |
lopjohn_26 | 0:0239a53cf648 | 44 | |
lopjohn_26 | 0:0239a53cf648 | 45 | |
lopjohn_26 | 0:0239a53cf648 | 46 | while(1){ |
lopjohn_26 | 0:0239a53cf648 | 47 | |
lopjohn_26 | 0:0239a53cf648 | 48 | int s1 = 0; |
lopjohn_26 | 0:0239a53cf648 | 49 | int s2 = 0; |
lopjohn_26 | 0:0239a53cf648 | 50 | int p = 0; |
lopjohn_26 | 0:0239a53cf648 | 51 | int q = 0; |
lopjohn_26 | 0:0239a53cf648 | 52 | |
lopjohn_26 | 0:0239a53cf648 | 53 | suma1=suma2=suma3=0; |
lopjohn_26 | 0:0239a53cf648 | 54 | |
lopjohn_26 | 0:0239a53cf648 | 55 | ini1: fflush( stdin ); |
lopjohn_26 | 0:0239a53cf648 | 56 | |
lopjohn_26 | 0:0239a53cf648 | 57 | header=0; |
lopjohn_26 | 0:0239a53cf648 | 58 | |
lopjohn_26 | 0:0239a53cf648 | 59 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header |
lopjohn_26 | 0:0239a53cf648 | 60 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
lopjohn_26 | 0:0239a53cf648 | 61 | else goto ini1; |
lopjohn_26 | 0:0239a53cf648 | 62 | |
lopjohn_26 | 0:0239a53cf648 | 63 | seguir: |
lopjohn_26 | 0:0239a53cf648 | 64 | //leo los datos de la trama y se meten a un arreglo |
lopjohn_26 | 0:0239a53cf648 | 65 | wait_us(570);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO |
lopjohn_26 | 0:0239a53cf648 | 66 | |
lopjohn_26 | 0:0239a53cf648 | 67 | for(i=0;i<=(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
lopjohn_26 | 0:0239a53cf648 | 68 | dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control |
lopjohn_26 | 0:0239a53cf648 | 69 | num[i]=dato; |
lopjohn_26 | 0:0239a53cf648 | 70 | wait_us(300); |
lopjohn_26 | 0:0239a53cf648 | 71 | } |
lopjohn_26 | 0:0239a53cf648 | 72 | wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla |
lopjohn_26 | 0:0239a53cf648 | 73 | pc.printf(",%d",header); |
lopjohn_26 | 0:0239a53cf648 | 74 | for(i=0;i<=(num_bits-1);++i){ |
lopjohn_26 | 0:0239a53cf648 | 75 | pc.printf(",%d",num[i]); |
lopjohn_26 | 0:0239a53cf648 | 76 | } |
lopjohn_26 | 0:0239a53cf648 | 77 | wait(0.1); //espero e imprimo en binario |
lopjohn_26 | 0:0239a53cf648 | 78 | pc.printf("\n\n"); |
lopjohn_26 | 0:0239a53cf648 | 79 | for(i=0;i<=(num_bits-1);++i){ |
lopjohn_26 | 0:0239a53cf648 | 80 | if(num[i] > ((T_alto+T_bajo)/2)){ |
lopjohn_26 | 0:0239a53cf648 | 81 | |
lopjohn_26 | 0:0239a53cf648 | 82 | pc.printf("1"); |
lopjohn_26 | 0:0239a53cf648 | 83 | s1 = num[i] + s1; |
lopjohn_26 | 0:0239a53cf648 | 84 | p++; |
lopjohn_26 | 0:0239a53cf648 | 85 | } |
lopjohn_26 | 0:0239a53cf648 | 86 | |
lopjohn_26 | 0:0239a53cf648 | 87 | else{ |
lopjohn_26 | 0:0239a53cf648 | 88 | |
lopjohn_26 | 0:0239a53cf648 | 89 | pc.printf("0"); |
lopjohn_26 | 0:0239a53cf648 | 90 | s2 = num[i] + s2; |
lopjohn_26 | 0:0239a53cf648 | 91 | q++; |
lopjohn_26 | 0:0239a53cf648 | 92 | } |
lopjohn_26 | 0:0239a53cf648 | 93 | |
lopjohn_26 | 0:0239a53cf648 | 94 | } |
lopjohn_26 | 0:0239a53cf648 | 95 | |
lopjohn_26 | 0:0239a53cf648 | 96 | |
lopjohn_26 | 0:0239a53cf648 | 97 | s1t = s1/p; |
lopjohn_26 | 0:0239a53cf648 | 98 | s2t = s2/q; |
lopjohn_26 | 0:0239a53cf648 | 99 | |
lopjohn_26 | 0:0239a53cf648 | 100 | for(i=0;i<=(num_bits-1);++i){ |
lopjohn_26 | 0:0239a53cf648 | 101 | |
lopjohn_26 | 0:0239a53cf648 | 102 | if (num[i] > ((T_alto+T_bajo)/2)) numb[i]=1; |
lopjohn_26 | 0:0239a53cf648 | 103 | else numb[i]=0; |
lopjohn_26 | 0:0239a53cf648 | 104 | } |
lopjohn_26 | 0:0239a53cf648 | 105 | |
lopjohn_26 | 0:0239a53cf648 | 106 | for(i=0;i<=(num_bits-1);++i){ |
lopjohn_26 | 0:0239a53cf648 | 107 | |
lopjohn_26 | 0:0239a53cf648 | 108 | if (numb[i] == num1[i]) suma1++; |
lopjohn_26 | 0:0239a53cf648 | 109 | if (numb[i] == num2[i]) suma2++; |
lopjohn_26 | 0:0239a53cf648 | 110 | if (numb[i] == num3[i]) suma3++; |
lopjohn_26 | 0:0239a53cf648 | 111 | } |
lopjohn_26 | 0:0239a53cf648 | 112 | pc.printf("%d,%d,%d\n", suma1, suma2, suma3); |
lopjohn_26 | 0:0239a53cf648 | 113 | if (suma1 == num_bits){ |
lopjohn_26 | 0:0239a53cf648 | 114 | |
lopjohn_26 | 0:0239a53cf648 | 115 | lcd.cls(); |
lopjohn_26 | 0:0239a53cf648 | 116 | led3 = !led3; |
lopjohn_26 | 0:0239a53cf648 | 117 | lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 118 | lcd.printf("#bits"); |
lopjohn_26 | 0:0239a53cf648 | 119 | lcd.locate(0,1); |
lopjohn_26 | 0:0239a53cf648 | 120 | lcd.printf("codigo="); |
lopjohn_26 | 0:0239a53cf648 | 121 | |
lopjohn_26 | 0:0239a53cf648 | 122 | lcd.locate(5,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 123 | lcd.printf("= ",num_bits); |
lopjohn_26 | 0:0239a53cf648 | 124 | lcd.locate(6,0); |
lopjohn_26 | 0:0239a53cf648 | 125 | lcd.printf("%d",num_bits); |
lopjohn_26 | 0:0239a53cf648 | 126 | lcd.locate(6,1); //------------- Ubica e imprime el parámetro "codigo" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 127 | lcd.printf("=1010100"); |
lopjohn_26 | 0:0239a53cf648 | 128 | |
lopjohn_26 | 0:0239a53cf648 | 129 | wait(1); |
lopjohn_26 | 0:0239a53cf648 | 130 | |
lopjohn_26 | 0:0239a53cf648 | 131 | lcd.cls(); |
lopjohn_26 | 0:0239a53cf648 | 132 | lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 133 | lcd.printf("header="); |
lopjohn_26 | 0:0239a53cf648 | 134 | lcd.locate(0,1); |
lopjohn_26 | 0:0239a53cf648 | 135 | lcd.printf("t1="); |
lopjohn_26 | 0:0239a53cf648 | 136 | lcd.locate(8,1); |
lopjohn_26 | 0:0239a53cf648 | 137 | lcd.printf("t0="); |
lopjohn_26 | 0:0239a53cf648 | 138 | |
lopjohn_26 | 0:0239a53cf648 | 139 | lcd.locate(6,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 140 | lcd.printf("= ",header); |
lopjohn_26 | 0:0239a53cf648 | 141 | lcd.locate(7,0); |
lopjohn_26 | 0:0239a53cf648 | 142 | lcd.printf("%d",header); |
lopjohn_26 | 0:0239a53cf648 | 143 | lcd.locate(2,1); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 144 | lcd.printf("= ",s1t); |
lopjohn_26 | 0:0239a53cf648 | 145 | lcd.locate(3,1); |
lopjohn_26 | 0:0239a53cf648 | 146 | lcd.printf("%d",s1t); |
lopjohn_26 | 0:0239a53cf648 | 147 | lcd.locate(10,1); |
lopjohn_26 | 0:0239a53cf648 | 148 | lcd.printf("= ",s2t); |
lopjohn_26 | 0:0239a53cf648 | 149 | lcd.locate(11,1); |
lopjohn_26 | 0:0239a53cf648 | 150 | lcd.printf("%d",s2t); |
lopjohn_26 | 0:0239a53cf648 | 151 | |
lopjohn_26 | 0:0239a53cf648 | 152 | } |
lopjohn_26 | 0:0239a53cf648 | 153 | |
lopjohn_26 | 0:0239a53cf648 | 154 | if (suma2 == num_bits){ |
lopjohn_26 | 0:0239a53cf648 | 155 | |
lopjohn_26 | 0:0239a53cf648 | 156 | lcd.cls(); |
lopjohn_26 | 0:0239a53cf648 | 157 | led4 = !led4; |
lopjohn_26 | 0:0239a53cf648 | 158 | lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 159 | lcd.printf("#bits"); |
lopjohn_26 | 0:0239a53cf648 | 160 | lcd.locate(0,1); |
lopjohn_26 | 0:0239a53cf648 | 161 | lcd.printf("codigo="); |
lopjohn_26 | 0:0239a53cf648 | 162 | |
lopjohn_26 | 0:0239a53cf648 | 163 | lcd.locate(5,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 164 | lcd.printf("= ",num_bits); |
lopjohn_26 | 0:0239a53cf648 | 165 | lcd.locate(6,0); |
lopjohn_26 | 0:0239a53cf648 | 166 | lcd.printf("%d",num_bits); |
lopjohn_26 | 0:0239a53cf648 | 167 | lcd.locate(6,1); //------------- Ubica e imprime el parámetro "codigo" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 168 | lcd.printf("=0110110"); |
lopjohn_26 | 0:0239a53cf648 | 169 | |
lopjohn_26 | 0:0239a53cf648 | 170 | wait(1); |
lopjohn_26 | 0:0239a53cf648 | 171 | |
lopjohn_26 | 0:0239a53cf648 | 172 | lcd.cls(); |
lopjohn_26 | 0:0239a53cf648 | 173 | lcd.locate(0,0); // Ubica e imprime nombre de los tiempos en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 174 | lcd.printf("header="); |
lopjohn_26 | 0:0239a53cf648 | 175 | lcd.locate(0,1); |
lopjohn_26 | 0:0239a53cf648 | 176 | lcd.printf("t1="); |
lopjohn_26 | 0:0239a53cf648 | 177 | lcd.locate(8,1); |
lopjohn_26 | 0:0239a53cf648 | 178 | lcd.printf("t0="); |
lopjohn_26 | 0:0239a53cf648 | 179 | |
lopjohn_26 | 0:0239a53cf648 | 180 | lcd.locate(6,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 181 | lcd.printf("= ",header); |
lopjohn_26 | 0:0239a53cf648 | 182 | lcd.locate(7,0); |
lopjohn_26 | 0:0239a53cf648 | 183 | lcd.printf("%d",header); |
lopjohn_26 | 0:0239a53cf648 | 184 | lcd.locate(2,1); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 185 | lcd.printf("= ",s1t); |
lopjohn_26 | 0:0239a53cf648 | 186 | lcd.locate(3,1); |
lopjohn_26 | 0:0239a53cf648 | 187 | lcd.printf("%d",s1t); |
lopjohn_26 | 0:0239a53cf648 | 188 | lcd.locate(10,1); |
lopjohn_26 | 0:0239a53cf648 | 189 | lcd.printf("= ",s2t); |
lopjohn_26 | 0:0239a53cf648 | 190 | lcd.locate(11,1); |
lopjohn_26 | 0:0239a53cf648 | 191 | lcd.printf("%d",s2t); |
lopjohn_26 | 0:0239a53cf648 | 192 | } |
lopjohn_26 | 0:0239a53cf648 | 193 | |
lopjohn_26 | 0:0239a53cf648 | 194 | if (suma3 == num_bits){ |
lopjohn_26 | 0:0239a53cf648 | 195 | |
lopjohn_26 | 0:0239a53cf648 | 196 | lcd.cls(); |
lopjohn_26 | 0:0239a53cf648 | 197 | led5 = !led5; |
lopjohn_26 | 0:0239a53cf648 | 198 | lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 199 | lcd.printf("#bits"); |
lopjohn_26 | 0:0239a53cf648 | 200 | lcd.locate(0,1); |
lopjohn_26 | 0:0239a53cf648 | 201 | lcd.printf("codigo="); |
lopjohn_26 | 0:0239a53cf648 | 202 | |
lopjohn_26 | 0:0239a53cf648 | 203 | lcd.locate(5,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 204 | lcd.printf("= ",num_bits); |
lopjohn_26 | 0:0239a53cf648 | 205 | lcd.locate(6,0); |
lopjohn_26 | 0:0239a53cf648 | 206 | lcd.printf("%d",num_bits); |
lopjohn_26 | 0:0239a53cf648 | 207 | lcd.locate(6,1); //------------- Ubica e imprime el parámetro "codigo" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 208 | lcd.printf("=0010100"); |
lopjohn_26 | 0:0239a53cf648 | 209 | |
lopjohn_26 | 0:0239a53cf648 | 210 | wait(1); |
lopjohn_26 | 0:0239a53cf648 | 211 | |
lopjohn_26 | 0:0239a53cf648 | 212 | lcd.cls(); |
lopjohn_26 | 0:0239a53cf648 | 213 | lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 214 | lcd.printf("header="); |
lopjohn_26 | 0:0239a53cf648 | 215 | lcd.locate(0,1); |
lopjohn_26 | 0:0239a53cf648 | 216 | lcd.printf("t1="); |
lopjohn_26 | 0:0239a53cf648 | 217 | lcd.locate(8,1); |
lopjohn_26 | 0:0239a53cf648 | 218 | lcd.printf("t0="); |
lopjohn_26 | 0:0239a53cf648 | 219 | |
lopjohn_26 | 0:0239a53cf648 | 220 | lcd.locate(6,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 221 | lcd.printf("= ",header); |
lopjohn_26 | 0:0239a53cf648 | 222 | lcd.locate(7,0); |
lopjohn_26 | 0:0239a53cf648 | 223 | lcd.printf("%d",header); |
lopjohn_26 | 0:0239a53cf648 | 224 | lcd.locate(2,1); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD |
lopjohn_26 | 0:0239a53cf648 | 225 | lcd.printf("= ",s1t); |
lopjohn_26 | 0:0239a53cf648 | 226 | lcd.locate(3,1); |
lopjohn_26 | 0:0239a53cf648 | 227 | lcd.printf("%d",s1t); |
lopjohn_26 | 0:0239a53cf648 | 228 | lcd.locate(10,1); |
lopjohn_26 | 0:0239a53cf648 | 229 | lcd.printf("= ",s2t); |
lopjohn_26 | 0:0239a53cf648 | 230 | lcd.locate(11,1); |
lopjohn_26 | 0:0239a53cf648 | 231 | lcd.printf("%d",s2t); |
lopjohn_26 | 0:0239a53cf648 | 232 | |
lopjohn_26 | 0:0239a53cf648 | 233 | } |
lopjohn_26 | 0:0239a53cf648 | 234 | |
lopjohn_26 | 0:0239a53cf648 | 235 | } |
lopjohn_26 | 0:0239a53cf648 | 236 | } |