IRDA

Dependencies:   Pulse1 TextLCD mbed

Committer:
procesadores_FAC
Date:
Wed Apr 29 04:44:19 2015 +0000
Revision:
0:6cd0d67e814d
Child:
1:a9968ce1a119
IRDA_para control remoto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
procesadores_FAC 0:6cd0d67e814d 1 //////////////////////
procesadores_FAC 0:6cd0d67e814d 2 // TAREA_5_IRDA
procesadores_FAC 0:6cd0d67e814d 3 //////////////////////
procesadores_FAC 0:6cd0d67e814d 4 #include "mbed.h"
procesadores_FAC 0:6cd0d67e814d 5 #include <Pulse1.h>
procesadores_FAC 0:6cd0d67e814d 6 #include "TextLCD.h"
procesadores_FAC 0:6cd0d67e814d 7
procesadores_FAC 0:6cd0d67e814d 8 //control remoto videobeam aula
procesadores_FAC 0:6cd0d67e814d 9 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
procesadores_FAC 0:6cd0d67e814d 10 Serial pc(USBTX, USBRX);
procesadores_FAC 0:6cd0d67e814d 11 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
procesadores_FAC 0:6cd0d67e814d 12
procesadores_FAC 0:6cd0d67e814d 13 DigitalOut led(LED1);
procesadores_FAC 0:6cd0d67e814d 14 DigitalOut led2(LED2);
procesadores_FAC 0:6cd0d67e814d 15
procesadores_FAC 0:6cd0d67e814d 16 // variables
procesadores_FAC 0:6cd0d67e814d 17 int headerL =0; //tiempo de cabecera pulso abajo
procesadores_FAC 0:6cd0d67e814d 18 int headerH =0;
procesadores_FAC 0:6cd0d67e814d 19 const int head_H = 4492; //+0.5% medida con osciloscopio en microsegundos
procesadores_FAC 0:6cd0d67e814d 20 const int head_L = 4447;//-0.5% medida con osciloscopio
procesadores_FAC 0:6cd0d67e814d 21 int i=0;
procesadores_FAC 0:6cd0d67e814d 22 const int T_alto=1700;//ponga su tiempo de la prueba
procesadores_FAC 0:6cd0d67e814d 23 const int T_bajo=600;//ponga su tiempo de la prueba
procesadores_FAC 0:6cd0d67e814d 24 const int num_bits = 32;//ponga su numero de bits
procesadores_FAC 0:6cd0d67e814d 25 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
procesadores_FAC 0:6cd0d67e814d 26 int dato; // tiempo de cada dato que se lee
procesadores_FAC 0:6cd0d67e814d 27 int bin[num_bits];
procesadores_FAC 0:6cd0d67e814d 28 int p;
procesadores_FAC 0:6cd0d67e814d 29 int C1=0x0F;
procesadores_FAC 0:6cd0d67e814d 30 int C4=0x0C; // quito cursor bajo
procesadores_FAC 0:6cd0d67e814d 31
procesadores_FAC 0:6cd0d67e814d 32 int main(){
procesadores_FAC 0:6cd0d67e814d 33
procesadores_FAC 0:6cd0d67e814d 34 lcd.cls();
procesadores_FAC 0:6cd0d67e814d 35 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
procesadores_FAC 0:6cd0d67e814d 36 while(1){
procesadores_FAC 0:6cd0d67e814d 37 ini1: fflush( stdin );
procesadores_FAC 0:6cd0d67e814d 38 headerL=0;
procesadores_FAC 0:6cd0d67e814d 39 headerH=0;
procesadores_FAC 0:6cd0d67e814d 40 led2=1;
procesadores_FAC 0:6cd0d67e814d 41 led=0;
procesadores_FAC 0:6cd0d67e814d 42
procesadores_FAC 0:6cd0d67e814d 43 headerL = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header
procesadores_FAC 0:6cd0d67e814d 44 pc.printf("Header bajo dura %d us\n", headerL);
procesadores_FAC 0:6cd0d67e814d 45 lcd.cls();
procesadores_FAC 0:6cd0d67e814d 46 lcd.locate(0,0);
procesadores_FAC 0:6cd0d67e814d 47 lcd.printf("HL=%d us", headerL);
procesadores_FAC 0:6cd0d67e814d 48 wait(0.1);
procesadores_FAC 0:6cd0d67e814d 49 headerH= irda.read_high_us();
procesadores_FAC 0:6cd0d67e814d 50 pc.printf("Header alto dura %d us\n", headerH);
procesadores_FAC 0:6cd0d67e814d 51 lcd.locate(0,1);
procesadores_FAC 0:6cd0d67e814d 52 lcd.printf("HH=%d us", headerH);
procesadores_FAC 0:6cd0d67e814d 53 wait(0.5);
procesadores_FAC 0:6cd0d67e814d 54 lcd.cls();
procesadores_FAC 0:6cd0d67e814d 55 lcd.locate(0,0);
procesadores_FAC 0:6cd0d67e814d 56 lcd.printf("T_bits= %d us", 600);
procesadores_FAC 0:6cd0d67e814d 57 lcd.locate(0,1);
procesadores_FAC 0:6cd0d67e814d 58 lcd.printf("Modulado = unos");
procesadores_FAC 0:6cd0d67e814d 59 led=1;
procesadores_FAC 0:6cd0d67e814d 60
procesadores_FAC 0:6cd0d67e814d 61 if (headerL > head_L && headerL < head_H) goto seguir;//verificar que este en la tolerancia +-1,8%
procesadores_FAC 0:6cd0d67e814d 62 else goto ini1;
procesadores_FAC 0:6cd0d67e814d 63
procesadores_FAC 0:6cd0d67e814d 64 seguir:
procesadores_FAC 0:6cd0d67e814d 65 //leo los datos de la trama y se meten a un arreglo
procesadores_FAC 0:6cd0d67e814d 66 ///wait_us(4470);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO
procesadores_FAC 0:6cd0d67e814d 67 lcd.writeCommand(C4);//escribimos un comando segun el manual del modulo LCD para quitar cursor bajo
procesadores_FAC 0:6cd0d67e814d 68 wait_us(600);
procesadores_FAC 0:6cd0d67e814d 69 led2=0;
procesadores_FAC 0:6cd0d67e814d 70 for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
procesadores_FAC 0:6cd0d67e814d 71 dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
procesadores_FAC 0:6cd0d67e814d 72 num[i]=dato;
procesadores_FAC 0:6cd0d67e814d 73 }
procesadores_FAC 0:6cd0d67e814d 74 wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla
procesadores_FAC 0:6cd0d67e814d 75 pc.printf(",BAJA = %d",headerL);
procesadores_FAC 0:6cd0d67e814d 76 for(i=0;i<(num_bits);++i){
procesadores_FAC 0:6cd0d67e814d 77 pc.printf(",%d",num[i]);
procesadores_FAC 0:6cd0d67e814d 78 }
procesadores_FAC 0:6cd0d67e814d 79
procesadores_FAC 0:6cd0d67e814d 80 wait(0.1); //espero e imprimo en binario
procesadores_FAC 0:6cd0d67e814d 81 pc.printf("\n\n");
procesadores_FAC 0:6cd0d67e814d 82 for(i=0;i<(num_bits);++i){
procesadores_FAC 0:6cd0d67e814d 83 if(num[i] > ((T_alto+T_bajo)/2)) {
procesadores_FAC 0:6cd0d67e814d 84 bin[i]=1;
procesadores_FAC 0:6cd0d67e814d 85 pc.printf("%d",bin[i]);
procesadores_FAC 0:6cd0d67e814d 86 }
procesadores_FAC 0:6cd0d67e814d 87 if(num[i] < ((T_alto+T_bajo)/2)) {
procesadores_FAC 0:6cd0d67e814d 88 bin[i]=0;
procesadores_FAC 0:6cd0d67e814d 89 pc.printf("%d",bin[i]);
procesadores_FAC 0:6cd0d67e814d 90 }
procesadores_FAC 0:6cd0d67e814d 91 }
procesadores_FAC 0:6cd0d67e814d 92 pc.printf("\n\n");
procesadores_FAC 0:6cd0d67e814d 93 lcd.cls();
procesadores_FAC 0:6cd0d67e814d 94 lcd.printf("N_HEX=");
procesadores_FAC 0:6cd0d67e814d 95 for (i=0;i< num_bits;i =i+4){
procesadores_FAC 0:6cd0d67e814d 96
procesadores_FAC 0:6cd0d67e814d 97 long int x = bin[i]*8+bin[i+1]*4+bin[i+2]*2+bin[i+3];
procesadores_FAC 0:6cd0d67e814d 98 // pc.printf("%d",x);
procesadores_FAC 0:6cd0d67e814d 99
procesadores_FAC 0:6cd0d67e814d 100 if (x<10){
procesadores_FAC 0:6cd0d67e814d 101
procesadores_FAC 0:6cd0d67e814d 102 pc.printf("%d",x);
procesadores_FAC 0:6cd0d67e814d 103 lcd.printf("%d",x);
procesadores_FAC 0:6cd0d67e814d 104 }
procesadores_FAC 0:6cd0d67e814d 105 if (x==10){
procesadores_FAC 0:6cd0d67e814d 106 pc.printf("A");
procesadores_FAC 0:6cd0d67e814d 107 lcd.printf("A");
procesadores_FAC 0:6cd0d67e814d 108 }
procesadores_FAC 0:6cd0d67e814d 109 if (x==11){
procesadores_FAC 0:6cd0d67e814d 110 pc.printf("B");
procesadores_FAC 0:6cd0d67e814d 111 lcd.printf("B");
procesadores_FAC 0:6cd0d67e814d 112 }
procesadores_FAC 0:6cd0d67e814d 113 if (x==12){
procesadores_FAC 0:6cd0d67e814d 114 pc.printf("C");
procesadores_FAC 0:6cd0d67e814d 115 lcd.printf("C");
procesadores_FAC 0:6cd0d67e814d 116 }
procesadores_FAC 0:6cd0d67e814d 117 if (x==13){
procesadores_FAC 0:6cd0d67e814d 118 pc.printf("D");
procesadores_FAC 0:6cd0d67e814d 119 lcd.printf("D");
procesadores_FAC 0:6cd0d67e814d 120 }
procesadores_FAC 0:6cd0d67e814d 121 if (x==14){
procesadores_FAC 0:6cd0d67e814d 122 pc.printf("E");
procesadores_FAC 0:6cd0d67e814d 123 lcd.printf("E");
procesadores_FAC 0:6cd0d67e814d 124 }
procesadores_FAC 0:6cd0d67e814d 125 if (x==11){
procesadores_FAC 0:6cd0d67e814d 126 pc.printf("F");
procesadores_FAC 0:6cd0d67e814d 127 lcd.printf("F");
procesadores_FAC 0:6cd0d67e814d 128 }
procesadores_FAC 0:6cd0d67e814d 129 }
procesadores_FAC 0:6cd0d67e814d 130
procesadores_FAC 0:6cd0d67e814d 131 }
procesadores_FAC 0:6cd0d67e814d 132 }