Tarea 6 Procesadores_Infrarojo Ernesto Jose Guevara Sequeda Juan Salvador Payares Iriarte

Dependencies:   DebouncedIn Pulse1 TextLCD mbed

Fork of irda_V_aula by Gustavo Ramirez

Committer:
payarito32
Date:
Fri May 16 16:24:02 2014 +0000
Revision:
4:8c523cea7a26
Parent:
3:82bebaf2a06a
Tarea 6 Procesadores_Infrarojo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:74d57f8ae247 1 #include "mbed.h"
tony63 0:74d57f8ae247 2 #include <Pulse1.h>
payarito32 4:8c523cea7a26 3 #include "TextLCD.h"
payarito32 4:8c523cea7a26 4 #include "math.h"
payarito32 4:8c523cea7a26 5 #include "stdio.h"
payarito32 4:8c523cea7a26 6 #include "DebouncedIn.h"
payarito32 4:8c523cea7a26 7
tony63 3:82bebaf2a06a 8 //control remoto videobeam aula
tony63 2:6a15ab0305c8 9 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
tony63 0:74d57f8ae247 10 Serial pc(USBTX, USBRX);
payarito32 4:8c523cea7a26 11 //DigitalOut led(LED1);
payarito32 4:8c523cea7a26 12 //DigitalOut led2(LED2);
payarito32 4:8c523cea7a26 13 DigitalOut led3(LED3);
payarito32 4:8c523cea7a26 14 DigitalOut led4(LED4);
payarito32 4:8c523cea7a26 15 DigitalOut led5(LED1);
payarito32 4:8c523cea7a26 16 bool encendido1; //Banderas de indicacin led encendido
payarito32 4:8c523cea7a26 17 bool encendido2;
payarito32 4:8c523cea7a26 18 bool encendido3;
payarito32 4:8c523cea7a26 19 int decimal;
payarito32 4:8c523cea7a26 20 int i;
payarito32 4:8c523cea7a26 21 int c2=3;
payarito32 4:8c523cea7a26 22 float p;
payarito32 4:8c523cea7a26 23 float c;
payarito32 4:8c523cea7a26 24 int potencia=1;
tony63 2:6a15ab0305c8 25 int header =0; //tiempo de cabecera pulso abajo
payarito32 4:8c523cea7a26 26 const int head_H = 4500+450; //+10% medida con osciloscopio en microsegundos
payarito32 4:8c523cea7a26 27 const int head_L = 4500-450;//-10% medida con osciloscopio
payarito32 4:8c523cea7a26 28
payarito32 4:8c523cea7a26 29 const int T_alto=1600;//ponga su tiempo de la prueba
payarito32 4:8c523cea7a26 30 const int T_bajo=560;//ponga su tiempo de la prueba
tony63 3:82bebaf2a06a 31 const int num_bits = 64;//ponga su numero de bits
tony63 2:6a15ab0305c8 32 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 2:6a15ab0305c8 33 int dato; // tiempo de cada dato que se lee
payarito32 4:8c523cea7a26 34 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5);
payarito32 4:8c523cea7a26 35 int dec[64];
payarito32 4:8c523cea7a26 36 int j;
payarito32 4:8c523cea7a26 37 int bit1;
payarito32 4:8c523cea7a26 38 int bit0;
payarito32 4:8c523cea7a26 39 //entradas
payarito32 4:8c523cea7a26 40 int t=0;
payarito32 4:8c523cea7a26 41
payarito32 4:8c523cea7a26 42 DebouncedIn p1(PTC3);
payarito32 4:8c523cea7a26 43 DebouncedIn p2(PTC4);
payarito32 4:8c523cea7a26 44 DebouncedIn p3(PTC5);
payarito32 4:8c523cea7a26 45
tony63 0:74d57f8ae247 46 int main(){
payarito32 4:8c523cea7a26 47
payarito32 4:8c523cea7a26 48 lcd.printf("COMENZAR");
payarito32 4:8c523cea7a26 49 lcd.locate(0,0);
payarito32 4:8c523cea7a26 50 while(1){
payarito32 4:8c523cea7a26 51
payarito32 4:8c523cea7a26 52 ini1: fflush( stdin );
payarito32 4:8c523cea7a26 53 header=0;
payarito32 4:8c523cea7a26 54
payarito32 4:8c523cea7a26 55 // led=1;
payarito32 4:8c523cea7a26 56 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header
payarito32 4:8c523cea7a26 57 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
payarito32 4:8c523cea7a26 58 else goto ini1;
payarito32 4:8c523cea7a26 59
payarito32 4:8c523cea7a26 60 seguir:
payarito32 4:8c523cea7a26 61 lcd.cls();
payarito32 4:8c523cea7a26 62 decimal = 0;
payarito32 4:8c523cea7a26 63
payarito32 4:8c523cea7a26 64 //leo los datos de la trama y se meten a un arreglo
payarito32 4:8c523cea7a26 65 wait_us(4500);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO
payarito32 4:8c523cea7a26 66 // led2=0;
payarito32 4:8c523cea7a26 67
payarito32 4:8c523cea7a26 68
payarito32 4:8c523cea7a26 69 for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
payarito32 4:8c523cea7a26 70 dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
payarito32 4:8c523cea7a26 71 num[i]=dato;
payarito32 4:8c523cea7a26 72 wait_us(300);
payarito32 4:8c523cea7a26 73 }
payarito32 4:8c523cea7a26 74
payarito32 4:8c523cea7a26 75
payarito32 4:8c523cea7a26 76 wait(0.5); //espero un poquito luego de leer todo el areglo y ponerlo en pantalla
payarito32 4:8c523cea7a26 77 pc.printf(",%d",header);
payarito32 4:8c523cea7a26 78
payarito32 4:8c523cea7a26 79 for(i=0;i<(num_bits-1);++i){
payarito32 4:8c523cea7a26 80 pc.printf(",%d",num[i]);
payarito32 4:8c523cea7a26 81 }
payarito32 4:8c523cea7a26 82 wait(0.1); //espero e imprimo en binario
payarito32 4:8c523cea7a26 83 pc.printf("\n\n");
payarito32 4:8c523cea7a26 84
payarito32 4:8c523cea7a26 85 lcd.locate(0,0);
payarito32 4:8c523cea7a26 86 for(i=42;i<(num_bits-1);++i){
payarito32 4:8c523cea7a26 87
payarito32 4:8c523cea7a26 88 if(num[i] > ((T_alto+T_bajo)/2)){
payarito32 4:8c523cea7a26 89 //lcd.printf("%d", 1);
payarito32 4:8c523cea7a26 90 dec[i]=1;
payarito32 4:8c523cea7a26 91 bit1 = num[i];
payarito32 4:8c523cea7a26 92 //potencia de 2
payarito32 4:8c523cea7a26 93
payarito32 4:8c523cea7a26 94
payarito32 4:8c523cea7a26 95 }else{
payarito32 4:8c523cea7a26 96 // lcd.printf("%d", 0);
payarito32 4:8c523cea7a26 97 dec[i] = 0;
payarito32 4:8c523cea7a26 98 bit0 = num[i];
payarito32 4:8c523cea7a26 99 }
payarito32 4:8c523cea7a26 100
payarito32 4:8c523cea7a26 101
payarito32 4:8c523cea7a26 102 // lcd.printf("Bits Fin: %d %d",dec[i-1],dec[i-2]);
payarito32 4:8c523cea7a26 103
payarito32 4:8c523cea7a26 104 }//cierro for
payarito32 4:8c523cea7a26 105
payarito32 4:8c523cea7a26 106 //Utilizo
payarito32 4:8c523cea7a26 107 c=0;
payarito32 4:8c523cea7a26 108 for(i=42; i<=63;++i){
payarito32 4:8c523cea7a26 109 if(dec[i] == 1){
payarito32 4:8c523cea7a26 110 p = c;
payarito32 4:8c523cea7a26 111 float potencia = 1;
payarito32 4:8c523cea7a26 112
payarito32 4:8c523cea7a26 113 for(j = 1; j <= p; ++j){
payarito32 4:8c523cea7a26 114 potencia = potencia*2;
payarito32 4:8c523cea7a26 115 }
payarito32 4:8c523cea7a26 116 if(p ==0){
payarito32 4:8c523cea7a26 117 potencia=1;
payarito32 4:8c523cea7a26 118 }
payarito32 4:8c523cea7a26 119 decimal = decimal + potencia;
payarito32 4:8c523cea7a26 120 }//fin if
payarito32 4:8c523cea7a26 121 c++;
payarito32 4:8c523cea7a26 122 }//Fin for
payarito32 4:8c523cea7a26 123
payarito32 4:8c523cea7a26 124 //lcd.printf("%10d", decimal);
payarito32 4:8c523cea7a26 125
payarito32 4:8c523cea7a26 126 if(decimal == 1933827){
payarito32 4:8c523cea7a26 127 if(encendido2 == false && encendido3 == false){
payarito32 4:8c523cea7a26 128
payarito32 4:8c523cea7a26 129
payarito32 4:8c523cea7a26 130 c2= c2+1;
payarito32 4:8c523cea7a26 131
payarito32 4:8c523cea7a26 132 if(c2 % 2 != 0){
payarito32 4:8c523cea7a26 133 led3=0;
payarito32 4:8c523cea7a26 134 lcd.printf("Tecla 1 ON");
payarito32 4:8c523cea7a26 135 encendido1 = true;
payarito32 4:8c523cea7a26 136 }else{
payarito32 4:8c523cea7a26 137 led3=1;
payarito32 4:8c523cea7a26 138 encendido1 = false;
payarito32 4:8c523cea7a26 139 lcd.printf("Tecla 1 OFF");
payarito32 4:8c523cea7a26 140 }//Fin else C2 %2 =0
payarito32 4:8c523cea7a26 141
payarito32 4:8c523cea7a26 142 }else{
payarito32 4:8c523cea7a26 143 lcd.cls();
payarito32 4:8c523cea7a26 144 lcd.printf("Boton Incorrecto!");
payarito32 4:8c523cea7a26 145 }//cierro else
payarito32 4:8c523cea7a26 146
payarito32 4:8c523cea7a26 147 ++t;
payarito32 4:8c523cea7a26 148 if(t==1){
payarito32 4:8c523cea7a26 149 lcd.locate(0,1);
payarito32 4:8c523cea7a26 150 lcd.printf("Cabecera H: %d ", header);
payarito32 4:8c523cea7a26 151 }
payarito32 4:8c523cea7a26 152
payarito32 4:8c523cea7a26 153 if(t==2){
payarito32 4:8c523cea7a26 154 lcd.locate(0,1);
payarito32 4:8c523cea7a26 155 lcd.printf("T Alto: %d ", bit1);
payarito32 4:8c523cea7a26 156
payarito32 4:8c523cea7a26 157 }
payarito32 4:8c523cea7a26 158 if(t==3){
payarito32 4:8c523cea7a26 159 lcd.locate(0,1);
payarito32 4:8c523cea7a26 160 lcd.printf("T Bajo: %d ", bit0);
payarito32 4:8c523cea7a26 161 t=0;
payarito32 4:8c523cea7a26 162 }
payarito32 4:8c523cea7a26 163 }//cierro if decimal 1
payarito32 4:8c523cea7a26 164
payarito32 4:8c523cea7a26 165 if(decimal == 1607427){
payarito32 4:8c523cea7a26 166 if(encendido1 == false && encendido3 == false){
payarito32 4:8c523cea7a26 167
payarito32 4:8c523cea7a26 168 c2= c2+1;
payarito32 4:8c523cea7a26 169 encendido2= true;
payarito32 4:8c523cea7a26 170 if(c2 % 2 != 0){
payarito32 4:8c523cea7a26 171 lcd.printf("Tecla 9 ON");
payarito32 4:8c523cea7a26 172 led4=0;
payarito32 4:8c523cea7a26 173 }else{
payarito32 4:8c523cea7a26 174 led4=1;
payarito32 4:8c523cea7a26 175 encendido2 = false;
payarito32 4:8c523cea7a26 176 lcd.printf("Tecla 9 OFF");
payarito32 4:8c523cea7a26 177 }
payarito32 4:8c523cea7a26 178 }else{
payarito32 4:8c523cea7a26 179 lcd.cls();
payarito32 4:8c523cea7a26 180 lcd.printf("Boton Incorrecto!");
payarito32 4:8c523cea7a26 181 }
payarito32 4:8c523cea7a26 182
payarito32 4:8c523cea7a26 183
payarito32 4:8c523cea7a26 184
payarito32 4:8c523cea7a26 185 ++t;
payarito32 4:8c523cea7a26 186 if(t==1){
payarito32 4:8c523cea7a26 187 lcd.locate(0,1);
payarito32 4:8c523cea7a26 188 lcd.printf("Cabecera H: %d ", header);
payarito32 4:8c523cea7a26 189 }
payarito32 4:8c523cea7a26 190
payarito32 4:8c523cea7a26 191 if(t==2){
payarito32 4:8c523cea7a26 192 lcd.locate(0,1);
payarito32 4:8c523cea7a26 193 lcd.printf("T Alto: %d ", bit1);
payarito32 4:8c523cea7a26 194
payarito32 4:8c523cea7a26 195 }
payarito32 4:8c523cea7a26 196 if(t==3){
payarito32 4:8c523cea7a26 197 lcd.locate(0,1);
payarito32 4:8c523cea7a26 198 lcd.printf("T Bajo: %d ", bit0);
payarito32 4:8c523cea7a26 199 t=0;
payarito32 4:8c523cea7a26 200 }
payarito32 4:8c523cea7a26 201 }// fin decimal 9
payarito32 4:8c523cea7a26 202
payarito32 4:8c523cea7a26 203
payarito32 4:8c523cea7a26 204 if(decimal == 1640067){
payarito32 4:8c523cea7a26 205 if(encendido1 == false && encendido2 == false){
payarito32 4:8c523cea7a26 206
payarito32 4:8c523cea7a26 207 c2= c2+1;
payarito32 4:8c523cea7a26 208 encendido3 = true;
payarito32 4:8c523cea7a26 209 if(c2 % 2 != 0){
payarito32 4:8c523cea7a26 210 led5=0;
payarito32 4:8c523cea7a26 211 lcd.printf("Tecla 8 ON");
payarito32 4:8c523cea7a26 212 }else{
payarito32 4:8c523cea7a26 213 led5=1;
payarito32 4:8c523cea7a26 214 encendido3 = false;
payarito32 4:8c523cea7a26 215 lcd.printf("Tecla 8 OFF");
payarito32 4:8c523cea7a26 216 }
payarito32 4:8c523cea7a26 217
payarito32 4:8c523cea7a26 218 }else{
payarito32 4:8c523cea7a26 219 lcd.cls();
payarito32 4:8c523cea7a26 220 lcd.printf("Boton Incorrecto!");
payarito32 4:8c523cea7a26 221
payarito32 4:8c523cea7a26 222 }
payarito32 4:8c523cea7a26 223
payarito32 4:8c523cea7a26 224
payarito32 4:8c523cea7a26 225 ++t;
payarito32 4:8c523cea7a26 226 if(t==1){
payarito32 4:8c523cea7a26 227 lcd.locate(0,1);
payarito32 4:8c523cea7a26 228 lcd.printf("Cabecera H: %d ", header);
payarito32 4:8c523cea7a26 229 }
payarito32 4:8c523cea7a26 230
payarito32 4:8c523cea7a26 231 if(t==2){
payarito32 4:8c523cea7a26 232 lcd.locate(0,1);
payarito32 4:8c523cea7a26 233 lcd.printf("T Alto: %d ", bit1);
payarito32 4:8c523cea7a26 234
payarito32 4:8c523cea7a26 235 }
payarito32 4:8c523cea7a26 236 if(t==3){
payarito32 4:8c523cea7a26 237 lcd.locate(0,1);
payarito32 4:8c523cea7a26 238 lcd.printf("T Bajo: %d ", bit0);
payarito32 4:8c523cea7a26 239 t=0;
payarito32 4:8c523cea7a26 240 }
payarito32 4:8c523cea7a26 241 }//cierro if decimal 8
payarito32 4:8c523cea7a26 242
payarito32 4:8c523cea7a26 243
payarito32 4:8c523cea7a26 244
payarito32 4:8c523cea7a26 245
payarito32 4:8c523cea7a26 246 }//cierro while
payarito32 4:8c523cea7a26 247
payarito32 4:8c523cea7a26 248
payarito32 4:8c523cea7a26 249 if(p1.falling()){
payarito32 4:8c523cea7a26 250 ++t;
payarito32 4:8c523cea7a26 251 if(t==1){
payarito32 4:8c523cea7a26 252 lcd.cls();
payarito32 4:8c523cea7a26 253
payarito32 4:8c523cea7a26 254 }//T1
payarito32 4:8c523cea7a26 255
payarito32 4:8c523cea7a26 256 if(t==2){
payarito32 4:8c523cea7a26 257 lcd.cls();
payarito32 4:8c523cea7a26 258 lcd.locate(0,0);
payarito32 4:8c523cea7a26 259 lcd.printf("T_alto: %d ", bit1);
payarito32 4:8c523cea7a26 260 lcd.locate(0,1);
payarito32 4:8c523cea7a26 261 lcd.printf("T_bajo: %d ", bit0);
payarito32 4:8c523cea7a26 262 t=0;
payarito32 4:8c523cea7a26 263 }//T1
payarito32 4:8c523cea7a26 264
payarito32 4:8c523cea7a26 265
payarito32 4:8c523cea7a26 266 }
payarito32 4:8c523cea7a26 267
payarito32 4:8c523cea7a26 268
payarito32 4:8c523cea7a26 269 if(p2.falling()){
payarito32 4:8c523cea7a26 270 lcd.cls();
payarito32 4:8c523cea7a26 271
payarito32 4:8c523cea7a26 272 lcd.printf("%d %d", t, num[t]);
payarito32 4:8c523cea7a26 273 lcd.locate(0,1);
payarito32 4:8c523cea7a26 274 lcd.printf("%d %d", t+1, num[t+1]);
payarito32 4:8c523cea7a26 275 }
payarito32 4:8c523cea7a26 276
payarito32 4:8c523cea7a26 277
payarito32 4:8c523cea7a26 278 //Fin pulsadores
payarito32 4:8c523cea7a26 279
payarito32 4:8c523cea7a26 280
tony63 0:74d57f8ae247 281
payarito32 4:8c523cea7a26 282
tony63 2:6a15ab0305c8 283 }
payarito32 4:8c523cea7a26 284
payarito32 4:8c523cea7a26 285
payarito32 4:8c523cea7a26 286
payarito32 4:8c523cea7a26 287