compara los pulsos obtenidos de un control remoto.
Dependencies: irda_V_aula mbed
main.cpp
- Committer:
- SSJprocesa
- Date:
- 2016-04-25
- Revision:
- 0:a0d94d4fc426
File content as of revision 0:a0d94d4fc426:
#include "mbed.h" #include <Pulse1.h> PulseInOut irda(PTD4);// en este puerto se pone el sensor infrarrojo Serial pc(USBTX, USBRX); DigitalOut led(LED1); DigitalOut led2(LED2); DigitalOut ledig(LED3); DigitalOut ds(PTA5); DigitalOut df(PTA4); int header =0; //tiempo de cabecera pulso abajo const int head_H = 2360*1.2; //+20% medida con osciloscopio en microsegundos const int head_L = 2360*0.8;//-20% medida con osciloscopio int i=0; const int T_alto=1200;//ponga su tiempo de la prueba const int T_bajo=560;//ponga su tiempo de la prueba const int num_bits = 12;//ponga su numero de bits int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos int nbina[num_bits]; int chan=0; int codig[12]= {0,0,1,0,0,0,0,0,1,1,1,0}; int dato; // tiempo de cada dato que se lee int main() { while(1) { ini1: header=0; chan=0; led2=1; led=1; ledig=1; header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% else goto ini1; seguir: //leo los datos de la trama y se meten a un arreglo wait_us(5000); for(i=0; i<=(num_bits-1); ++i) { // POR OSCILOSCOPIO se determina que llegan (num_bits),datos dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control num[i]=dato; wait_us(300); } wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla pc.printf(",%d",header); for(i=0; i<=(num_bits-1); ++i) { pc.printf(",%d",num[i]); } wait(0.1); //espero e imprimo en binario pc.printf("\n\n"); for(i=0; i<=(num_bits-1); ++i) { if(num[i] > ((T_alto+T_bajo)/2)) { nbina[i]=1; pc.printf("%d",nbina[i]); } else { nbina[i]=0; pc.printf("%d",nbina[i]); } } pc.printf("\n"); for(i=0; i<=(num_bits-1); ++i) { pc.printf("%d",codig[i]); if(codig[i]==nbina[i]) { chan++; } } if(chan==12) { ds=1;df=0; wait(1); ds=0;df=0;led2=0;pc.printf("\nValvula On\n"); wait(5); ds=0;df=1; wait(1); ds=0;df=0;ledig=0;led2=1;pc.printf("Valvula Off\n"); wait(2); } } }