compara los pulsos obtenidos de un control remoto.

Dependencies:   irda_V_aula mbed

Committer:
SSJprocesa
Date:
Mon Apr 25 20:13:49 2016 +0000
Revision:
0:a0d94d4fc426
obtener y comprar pulsos, control remoto;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SSJprocesa 0:a0d94d4fc426 1 #include "mbed.h"
SSJprocesa 0:a0d94d4fc426 2 #include <Pulse1.h>
SSJprocesa 0:a0d94d4fc426 3
SSJprocesa 0:a0d94d4fc426 4 PulseInOut irda(PTD4);// en este puerto se pone el sensor infrarrojo
SSJprocesa 0:a0d94d4fc426 5 Serial pc(USBTX, USBRX);
SSJprocesa 0:a0d94d4fc426 6 DigitalOut led(LED1);
SSJprocesa 0:a0d94d4fc426 7 DigitalOut led2(LED2);
SSJprocesa 0:a0d94d4fc426 8 DigitalOut ledig(LED3);
SSJprocesa 0:a0d94d4fc426 9 DigitalOut ds(PTA5);
SSJprocesa 0:a0d94d4fc426 10 DigitalOut df(PTA4);
SSJprocesa 0:a0d94d4fc426 11
SSJprocesa 0:a0d94d4fc426 12
SSJprocesa 0:a0d94d4fc426 13 int header =0; //tiempo de cabecera pulso abajo
SSJprocesa 0:a0d94d4fc426 14 const int head_H = 2360*1.2; //+20% medida con osciloscopio en microsegundos
SSJprocesa 0:a0d94d4fc426 15 const int head_L = 2360*0.8;//-20% medida con osciloscopio
SSJprocesa 0:a0d94d4fc426 16 int i=0;
SSJprocesa 0:a0d94d4fc426 17 const int T_alto=1200;//ponga su tiempo de la prueba
SSJprocesa 0:a0d94d4fc426 18 const int T_bajo=560;//ponga su tiempo de la prueba
SSJprocesa 0:a0d94d4fc426 19 const int num_bits = 12;//ponga su numero de bits
SSJprocesa 0:a0d94d4fc426 20 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
SSJprocesa 0:a0d94d4fc426 21 int nbina[num_bits];
SSJprocesa 0:a0d94d4fc426 22 int chan=0;
SSJprocesa 0:a0d94d4fc426 23 int codig[12]= {0,0,1,0,0,0,0,0,1,1,1,0};
SSJprocesa 0:a0d94d4fc426 24 int dato; // tiempo de cada dato que se lee
SSJprocesa 0:a0d94d4fc426 25
SSJprocesa 0:a0d94d4fc426 26 int main()
SSJprocesa 0:a0d94d4fc426 27 {
SSJprocesa 0:a0d94d4fc426 28 while(1) {
SSJprocesa 0:a0d94d4fc426 29 ini1:
SSJprocesa 0:a0d94d4fc426 30 header=0;
SSJprocesa 0:a0d94d4fc426 31 chan=0;
SSJprocesa 0:a0d94d4fc426 32 led2=1;
SSJprocesa 0:a0d94d4fc426 33 led=1;
SSJprocesa 0:a0d94d4fc426 34 ledig=1;
SSJprocesa 0:a0d94d4fc426 35 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo
SSJprocesa 0:a0d94d4fc426 36 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
SSJprocesa 0:a0d94d4fc426 37 else goto ini1;
SSJprocesa 0:a0d94d4fc426 38
SSJprocesa 0:a0d94d4fc426 39 seguir:
SSJprocesa 0:a0d94d4fc426 40 //leo los datos de la trama y se meten a un arreglo
SSJprocesa 0:a0d94d4fc426 41 wait_us(5000);
SSJprocesa 0:a0d94d4fc426 42 for(i=0; i<=(num_bits-1); ++i) { // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
SSJprocesa 0:a0d94d4fc426 43 dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control
SSJprocesa 0:a0d94d4fc426 44 num[i]=dato;
SSJprocesa 0:a0d94d4fc426 45 wait_us(300);
SSJprocesa 0:a0d94d4fc426 46 }
SSJprocesa 0:a0d94d4fc426 47 wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla
SSJprocesa 0:a0d94d4fc426 48 pc.printf(",%d",header);
SSJprocesa 0:a0d94d4fc426 49 for(i=0; i<=(num_bits-1); ++i) {
SSJprocesa 0:a0d94d4fc426 50 pc.printf(",%d",num[i]);
SSJprocesa 0:a0d94d4fc426 51 }
SSJprocesa 0:a0d94d4fc426 52 wait(0.1); //espero e imprimo en binario
SSJprocesa 0:a0d94d4fc426 53 pc.printf("\n\n");
SSJprocesa 0:a0d94d4fc426 54 for(i=0; i<=(num_bits-1); ++i) {
SSJprocesa 0:a0d94d4fc426 55 if(num[i] > ((T_alto+T_bajo)/2)) {
SSJprocesa 0:a0d94d4fc426 56 nbina[i]=1;
SSJprocesa 0:a0d94d4fc426 57 pc.printf("%d",nbina[i]);
SSJprocesa 0:a0d94d4fc426 58 } else {
SSJprocesa 0:a0d94d4fc426 59 nbina[i]=0;
SSJprocesa 0:a0d94d4fc426 60 pc.printf("%d",nbina[i]);
SSJprocesa 0:a0d94d4fc426 61
SSJprocesa 0:a0d94d4fc426 62 }
SSJprocesa 0:a0d94d4fc426 63 }
SSJprocesa 0:a0d94d4fc426 64
SSJprocesa 0:a0d94d4fc426 65 pc.printf("\n");
SSJprocesa 0:a0d94d4fc426 66 for(i=0; i<=(num_bits-1); ++i) {
SSJprocesa 0:a0d94d4fc426 67 pc.printf("%d",codig[i]);
SSJprocesa 0:a0d94d4fc426 68
SSJprocesa 0:a0d94d4fc426 69 if(codig[i]==nbina[i]) {
SSJprocesa 0:a0d94d4fc426 70 chan++;
SSJprocesa 0:a0d94d4fc426 71 }
SSJprocesa 0:a0d94d4fc426 72 }
SSJprocesa 0:a0d94d4fc426 73 if(chan==12) {
SSJprocesa 0:a0d94d4fc426 74 ds=1;df=0;
SSJprocesa 0:a0d94d4fc426 75 wait(1);
SSJprocesa 0:a0d94d4fc426 76 ds=0;df=0;led2=0;pc.printf("\nValvula On\n");
SSJprocesa 0:a0d94d4fc426 77 wait(5);
SSJprocesa 0:a0d94d4fc426 78 ds=0;df=1;
SSJprocesa 0:a0d94d4fc426 79 wait(1);
SSJprocesa 0:a0d94d4fc426 80 ds=0;df=0;ledig=0;led2=1;pc.printf("Valvula Off\n");
SSJprocesa 0:a0d94d4fc426 81 wait(2);
SSJprocesa 0:a0d94d4fc426 82 }
SSJprocesa 0:a0d94d4fc426 83
SSJprocesa 0:a0d94d4fc426 84 }
SSJprocesa 0:a0d94d4fc426 85 }