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

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?

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