Programa para prender leds de la tarjeta freescale KL25Z con control remoto
Fork of irda1 by
main.cpp@3:6d4bbfbc67ea, 2013-11-20 (annotated)
- Committer:
- cmorab
- Date:
- Wed Nov 20 17:08:20 2013 +0000
- Revision:
- 3:6d4bbfbc67ea
- Parent:
- 2:6a15ab0305c8
Programa para prender leds de la tarjeta freescale KL25Z
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cmorab | 3:6d4bbfbc67ea | 1 | /* Parámetros del Control: Caracterización: |
cmorab | 3:6d4bbfbc67ea | 2 | Cabecera baja = 8930us |
cmorab | 3:6d4bbfbc67ea | 3 | Cabecera alta = 4430us |
cmorab | 3:6d4bbfbc67ea | 4 | Uno lógico = 1600us |
cmorab | 3:6d4bbfbc67ea | 5 | Cero Lógico = 533us |
cmorab | 3:6d4bbfbc67ea | 6 | tiempo entre bits = 633us */ |
cmorab | 3:6d4bbfbc67ea | 7 | |
cmorab | 3:6d4bbfbc67ea | 8 | #include "mbed.h" //LLamado de librerías. |
tony63 | 0:74d57f8ae247 | 9 | #include <Pulse1.h> |
tony63 | 0:74d57f8ae247 | 10 | |
tony63 | 2:6a15ab0305c8 | 11 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
tony63 | 0:74d57f8ae247 | 12 | Serial pc(USBTX, USBRX); |
cmorab | 3:6d4bbfbc67ea | 13 | DigitalOut a0(LED1); // Se establecen las salidas para los leds 1, 2 y 3 de la tarjeta KL25Z |
cmorab | 3:6d4bbfbc67ea | 14 | DigitalOut a1(LED2); |
cmorab | 3:6d4bbfbc67ea | 15 | DigitalOut a2(LED3); |
tony63 | 2:6a15ab0305c8 | 16 | int header =0; //tiempo de cabecera pulso abajo |
cmorab | 3:6d4bbfbc67ea | 17 | const int head_H = 10716; //+20% medida con osciloscopio en [microsegundos] (Cabecera) |
cmorab | 3:6d4bbfbc67ea | 18 | const int head_L = 7144;//-20% medida con osciloscopio en [microsegundos] |
cmorab | 3:6d4bbfbc67ea | 19 | int i=0; //Se define una Variable tipo int. |
cmorab | 3:6d4bbfbc67ea | 20 | const int T_alto=1600;//ponga su tiempo de la prueba (tiempo de uno lógico) |
cmorab | 3:6d4bbfbc67ea | 21 | const int T_bajo=533;//ponga su tiempo de la prueba (tiempo cero lógico) |
cmorab | 3:6d4bbfbc67ea | 22 | const int num_bits = 33;//ponga su numero de bits |
tony63 | 2:6a15ab0305c8 | 23 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 2:6a15ab0305c8 | 24 | int dato; // tiempo de cada dato que se lee |
cmorab | 3:6d4bbfbc67ea | 25 | int b1[32],b2[32],b3[32]; //Se crean tres vectores que contendran la cadena de bits de tres botones del control remoto |
tony63 | 0:74d57f8ae247 | 26 | |
tony63 | 0:74d57f8ae247 | 27 | int main(){ |
cmorab | 3:6d4bbfbc67ea | 28 | //Luego se saber la cadena de bits de los botones [1],[2] y [3] del control remoto, se meten a los vectores b1, b2 y b3 respectivamente. |
cmorab | 3:6d4bbfbc67ea | 29 | b1[0]=b1[1]=b1[2]=b1[3]=b1[4]=b1[5]=b1[6]=b1[7]=b1[16]=b1[17]=b1[20]=b1[21]=b1[22]=b1[23]=b1[26]=b1[27]=0; |
cmorab | 3:6d4bbfbc67ea | 30 | b1[8] =b1[9]=b1[10]=b1[11]=b1[12]=b1[13]=b1[14]=b1[15]=b1[18]=b1[19]=b1[24]=b1[25]=b1[28]=b1[29]=b1[30]=b1[31]=1; |
cmorab | 3:6d4bbfbc67ea | 31 | |
cmorab | 3:6d4bbfbc67ea | 32 | b2[0]=b2[1]=b2[2]=b2[3]=b2[4]=b2[5]=b2[6]=b2[7]=b2[16]=b2[17] =b2[18] =b2[21]=b2[22]=b2[23] =b2[27] =b2[28]=0; |
cmorab | 3:6d4bbfbc67ea | 33 | b2[8] =b2[9]=b2[10]=b2[11]=b2[12]=b2[13]=b2[14]=b2[15] =b2[19] =b2[20]=b2[24]=b2[25] =b2[26] =b2[29]=b2[30]=b2[31]=1; |
cmorab | 3:6d4bbfbc67ea | 34 | |
cmorab | 3:6d4bbfbc67ea | 35 | b3[0]=b3[1]=b3[2]=b3[3]=b3[4]=b3[5]=b3[6]=b3[7]=b3[16] =b3[21]= b3[23] =b3[27] =b3[25] =b3[26]=b3[28] =b3[30]=0; |
cmorab | 3:6d4bbfbc67ea | 36 | b3[8] =b3[9]=b3[10]=b3[11]=b3[12]=b3[13]=b3[14]=b3[15] =b3[17] =b3[18]=b3[19] =b3[20]= b3[22]=b3[24] =b3[29] =b3[31]=1; |
cmorab | 3:6d4bbfbc67ea | 37 | |
cmorab | 3:6d4bbfbc67ea | 38 | |
cmorab | 3:6d4bbfbc67ea | 39 | int m,e,r; //defino variables para la activación de cada botón delcontrol remoto |
cmorab | 3:6d4bbfbc67ea | 40 | m=e=r=0; |
cmorab | 3:6d4bbfbc67ea | 41 | a0=a1=a2=1; |
tony63 | 0:74d57f8ae247 | 42 | while(1){ |
cmorab | 3:6d4bbfbc67ea | 43 | ini1: header=0; |
tony63 | 2:6a15ab0305c8 | 44 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo |
tony63 | 2:6a15ab0305c8 | 45 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
tony63 | 2:6a15ab0305c8 | 46 | else goto ini1; |
tony63 | 0:74d57f8ae247 | 47 | |
tony63 | 2:6a15ab0305c8 | 48 | seguir: |
tony63 | 2:6a15ab0305c8 | 49 | //leo los datos de la trama y se meten a un arreglo |
cmorab | 3:6d4bbfbc67ea | 50 | wait_us(400); |
cmorab | 3:6d4bbfbc67ea | 51 | |
tony63 | 2:6a15ab0305c8 | 52 | for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
cmorab | 3:6d4bbfbc67ea | 53 | dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control |
cmorab | 3:6d4bbfbc67ea | 54 | num[i]=dato; |
cmorab | 3:6d4bbfbc67ea | 55 | wait_us(400); |
cmorab | 3:6d4bbfbc67ea | 56 | } |
cmorab | 3:6d4bbfbc67ea | 57 | |
cmorab | 3:6d4bbfbc67ea | 58 | wait(0.8); // (0.5)Espero |
cmorab | 3:6d4bbfbc67ea | 59 | |
cmorab | 3:6d4bbfbc67ea | 60 | |
cmorab | 3:6d4bbfbc67ea | 61 | for(i=0;i<(num_bits-1);++i){ |
cmorab | 3:6d4bbfbc67ea | 62 | if(num[i] > ((T_alto+T_bajo)/2)) num[i]=1; |
cmorab | 3:6d4bbfbc67ea | 63 | else num[i]=0; |
cmorab | 3:6d4bbfbc67ea | 64 | } |
cmorab | 3:6d4bbfbc67ea | 65 | for(i=0;i<(num_bits-1);++i){ |
cmorab | 3:6d4bbfbc67ea | 66 | if(num[i]==b1[i])m++; |
cmorab | 3:6d4bbfbc67ea | 67 | } |
cmorab | 3:6d4bbfbc67ea | 68 | |
cmorab | 3:6d4bbfbc67ea | 69 | if(m==32){ |
cmorab | 3:6d4bbfbc67ea | 70 | a0=!a0; |
cmorab | 3:6d4bbfbc67ea | 71 | } |
cmorab | 3:6d4bbfbc67ea | 72 | for(i=0;i<(num_bits-1);++i){ |
cmorab | 3:6d4bbfbc67ea | 73 | if(num[i]==b2[i])e++; |
cmorab | 3:6d4bbfbc67ea | 74 | } |
cmorab | 3:6d4bbfbc67ea | 75 | |
cmorab | 3:6d4bbfbc67ea | 76 | if(e==32){ |
cmorab | 3:6d4bbfbc67ea | 77 | a1=!a1; |
cmorab | 3:6d4bbfbc67ea | 78 | } |
cmorab | 3:6d4bbfbc67ea | 79 | for(i=0;i<(num_bits-1);++i){ |
cmorab | 3:6d4bbfbc67ea | 80 | if(num[i]==b3[i])r++; |
cmorab | 3:6d4bbfbc67ea | 81 | } |
cmorab | 3:6d4bbfbc67ea | 82 | |
cmorab | 3:6d4bbfbc67ea | 83 | if(r==32){ |
cmorab | 3:6d4bbfbc67ea | 84 | a2=!a2; |
cmorab | 3:6d4bbfbc67ea | 85 | } |
cmorab | 3:6d4bbfbc67ea | 86 | m=e=r=0; |
tony63 | 2:6a15ab0305c8 | 87 | } |
cmorab | 3:6d4bbfbc67ea | 88 | } |