CAPTURAS DE CÓDIGOS IRDA SIN OSCILOSCOPIO, MIDE LA CANTIDAD DE ESPACIOS EN MODO NORMAL LA DURACIÓN Y EL PROMEDIO DE ELLOS. CON LA AYUDA DE PULSAR BAJO UN BOTÓN DEVUELVE EL CODIGO COMPLETO

Dependencies:   Pulse1 mbed

CÓDIGO PARA LA FRDMKL25Z PARA USAR ESTE PROGRAMA SE DEBE USAR UNA TERMINAL SERIE RECOMIENDO TERMITE SE BAJA DE ESTA PAGINA https://www.compuphase.com/software_termite.htm

RECUERDE QUE UNA VEZ CONECTADA LA FREEDOM BOARD DEBE CONSULTAR EL PUERTO ASIGNADO POR WINDOWS AUNQUE TERMITE DETECTA ESO AUTOMATICAMENTE.

PONER UN SENSOR IRDA DE 3,3V EN EL PUERTO PTD5 Y UN SUICHE EN PTD0 CON EL PUERTO DE SUICHE SIN ACCIONAR DISPARE CON EL CONTROL REMOTO ESPERE A QUE HAGA LA CAPTURA Y ENTREGUE EL PROMEDIO Y NUMERO DE DATOS

LUEGO ACCIONE EL SUICHE DE PTD0 O PONGA EL PUENTE INDICADO EN EL CÓDIGO A TIERRA Y VUELVA A DISPARAR ESPERE UNOS SEGUNDOS Y EL PROGRAMA LE ENTREGARA UN PATRÓN BINARIO DEL CÓDIGO RECIBIDO

NO REQUIERE NI SE DEBE HACER RESET ENTRE EL ACCIONAMIENTO DEL SUICHE TODOS LOS CÓDIGOS QUE SIGA DISPARANDO SERÁN RECONOCIDOS EN MODO NORMAL NO ESTA PROBADO EN CONTROLES SONY PERO PUEDE FUNCIONAR

Committer:
tony63
Date:
Sat Mar 18 07:53:22 2017 +0000
Revision:
1:69f833c768c8
Parent:
0:86c0c1652dd4
se agrego una rutina que transforma el binario en un c?digo decimal pero la cifra desborda esa es la causa de el valor negativo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:86c0c1652dd4 1 #include "mbed.h"
tony63 0:86c0c1652dd4 2 #include <Pulse1.h>
tony63 0:86c0c1652dd4 3 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
tony63 0:86c0c1652dd4 4
tony63 0:86c0c1652dd4 5 Serial pc(USBTX, USBRX);
tony63 0:86c0c1652dd4 6 DigitalOut led(LED1);
tony63 0:86c0c1652dd4 7 DigitalOut led2(LED2);
tony63 0:86c0c1652dd4 8 DigitalIn mode(PTD0);
tony63 1:69f833c768c8 9 int numN[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 1:69f833c768c8 10 int numP[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 1:69f833c768c8 11 int bin[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 0:86c0c1652dd4 12 int dato; // tiempo de cada dato que se lee
tony63 0:86c0c1652dd4 13 int pul_low;
tony63 0:86c0c1652dd4 14 int i,j,k,header,proL,proH;
tony63 1:69f833c768c8 15 int r;
tony63 1:69f833c768c8 16 int code;
tony63 0:86c0c1652dd4 17 int main(){
tony63 1:69f833c768c8 18
tony63 0:86c0c1652dd4 19 fflush( stdin );
tony63 0:86c0c1652dd4 20 lop1: header = irda.read_low_us();
tony63 0:86c0c1652dd4 21 if(header>8000) goto seguir;
tony63 0:86c0c1652dd4 22 goto lop1;
tony63 0:86c0c1652dd4 23 seguir:
tony63 0:86c0c1652dd4 24 for(i=0;i<35;++i){
tony63 0:86c0c1652dd4 25 if(mode){
tony63 0:86c0c1652dd4 26 numN[i] = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header
tony63 0:86c0c1652dd4 27 }
tony63 0:86c0c1652dd4 28 if(!mode){
tony63 0:86c0c1652dd4 29 numP[i] = irda.read_high_us(); //funcion para leer un pulso de caida o bajo en header
tony63 0:86c0c1652dd4 30 }
tony63 0:86c0c1652dd4 31 //funcion para leer un pulso de caida o bajo en header
tony63 0:86c0c1652dd4 32 }
tony63 0:86c0c1652dd4 33
tony63 0:86c0c1652dd4 34 pc.printf("Header=%d \n",header," uS");
tony63 0:86c0c1652dd4 35 for(i=0;i<36;++i){
tony63 0:86c0c1652dd4 36 pc.printf(",%d, %d, %d \n",numN[i],i,numP[i]);
tony63 0:86c0c1652dd4 37
tony63 0:86c0c1652dd4 38 if(numN[i]>8000){
tony63 0:86c0c1652dd4 39 pc.printf("\n");
tony63 0:86c0c1652dd4 40 pc.printf("espacios=%d\n",i);
tony63 0:86c0c1652dd4 41 k=i;
tony63 0:86c0c1652dd4 42 proL=0;
tony63 0:86c0c1652dd4 43 for(i=0;i<k;++i){
tony63 0:86c0c1652dd4 44 proL=proL+numN[i];
tony63 0:86c0c1652dd4 45 }
tony63 0:86c0c1652dd4 46 proL=proL/k;
tony63 0:86c0c1652dd4 47 pc.printf("promedio_E=%d\n",proL);
tony63 0:86c0c1652dd4 48 wait(3);
tony63 0:86c0c1652dd4 49 pc.printf("\n");
tony63 0:86c0c1652dd4 50
tony63 0:86c0c1652dd4 51 if(!mode){
tony63 0:86c0c1652dd4 52 for(i=0;i<k-1;++i){
tony63 0:86c0c1652dd4 53 if(numP[i]>(2*proL)){
tony63 1:69f833c768c8 54 bin[i]=1;
tony63 1:69f833c768c8 55 for(j=0;j<i+1;++j){bin[i]=bin[i]*2;}
tony63 1:69f833c768c8 56 //pc.printf("%d-",bin[i]);
tony63 0:86c0c1652dd4 57 }
tony63 0:86c0c1652dd4 58 if(numP[i]<(2*proL)){
tony63 1:69f833c768c8 59 bin[i]=0;
tony63 1:69f833c768c8 60 //pc.printf("%d-",bin[i]);
tony63 0:86c0c1652dd4 61 }
tony63 0:86c0c1652dd4 62 }
tony63 0:86c0c1652dd4 63 }
tony63 1:69f833c768c8 64 for(i=0;i<k-1;++i){code=code+bin[i];}
tony63 1:69f833c768c8 65 pc.printf("\n");
tony63 1:69f833c768c8 66 pc.printf("code=%d",code);
tony63 1:69f833c768c8 67 code=0;
tony63 0:86c0c1652dd4 68 goto lop1;
tony63 0:86c0c1652dd4 69
tony63 0:86c0c1652dd4 70 }
tony63 0:86c0c1652dd4 71 }
tony63 0:86c0c1652dd4 72 }
tony63 0:86c0c1652dd4 73
tony63 1:69f833c768c8 74 //for(j=0;j<i;++j)