![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
IRDA
Dependencies: Pulse1 TextLCD mbed
Diff: main.cpp
- Revision:
- 1:a9968ce1a119
- Parent:
- 0:6cd0d67e814d
- Child:
- 2:a2ec9f68d387
diff -r 6cd0d67e814d -r a9968ce1a119 main.cpp --- a/main.cpp Wed Apr 29 04:44:19 2015 +0000 +++ b/main.cpp Wed Apr 29 13:40:09 2015 +0000 @@ -26,6 +26,8 @@ int dato; // tiempo de cada dato que se lee int bin[num_bits]; int p; +int b; +int a; int C1=0x0F; int C4=0x0C; // quito cursor bajo @@ -39,6 +41,7 @@ headerH=0; led2=1; led=0; + headerL = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header pc.printf("Header bajo dura %d us\n", headerL); @@ -48,14 +51,9 @@ wait(0.1); headerH= irda.read_high_us(); pc.printf("Header alto dura %d us\n", headerH); - lcd.locate(0,1); + lcd.locate(0,1); lcd.printf("HH=%d us", headerH); - wait(0.5); - lcd.cls(); - lcd.locate(0,0); - lcd.printf("T_bits= %d us", 600); - lcd.locate(0,1); - lcd.printf("Modulado = unos"); + wait(0.3); led=1; if (headerL > head_L && headerL < head_H) goto seguir;//verificar que este en la tolerancia +-1,8% @@ -67,28 +65,60 @@ lcd.writeCommand(C4);//escribimos un comando segun el manual del modulo LCD para quitar cursor bajo wait_us(600); led2=0; - for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos + for(i=0;i<(num_bits);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control num[i]=dato; - } - wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla - pc.printf(",BAJA = %d",headerL); + } + + + wait(0.5);//espero un poquito luego de leer todo el arreglo y ponerlo en pantalla for(i=0;i<(num_bits);++i){ pc.printf(",%d",num[i]); } wait(0.1); //espero e imprimo en binario pc.printf("\n\n"); + b=0; + a=0; + int c=0; + int d=0; for(i=0;i<(num_bits);++i){ if(num[i] > ((T_alto+T_bajo)/2)) { + b = num[i]+b; bin[i]=1; pc.printf("%d",bin[i]); + a = a+1; } if(num[i] < ((T_alto+T_bajo)/2)) { + c = num[i]+c; bin[i]=0; pc.printf("%d",bin[i]); + d = d+1; } } + pc.printf("\n\n"); + int h1 = b/a; + int h0 = c/d; + pc.printf(" tide unos1 =%d",b); + pc.printf(", can1 =%d",a); + pc.printf(" tide unoso =%d",c); + pc.printf(", can0 =%d",d); + + pc.printf("\n\n"); + wait (0.3); + pc.printf(" t_unos =%d",h1); + pc.printf(", t_ceros =%d",h0); + + + lcd.cls(); + lcd.locate(0,0); + lcd.printf("N_bits = %d",i); + + lcd.cls(); + lcd.locate(0,0); + lcd.printf("t_unos = %d",h1); + lcd.locate(0,1); + lcd.printf("t_ceros = %d",h0); pc.printf("\n\n"); lcd.cls(); lcd.printf("N_HEX=");