es una versión mejorada que no requiere suiche y da mas informacion. Da indicaciones si no captura la trama completa indicando que no sale un tiempo enorme al final. y el inicio se determina despues de registrar el Header alto
Revision 3:a63a363d9b95, committed 2019-06-25
- Comitter:
- tony63
- Date:
- Tue Jun 25 17:47:43 2019 +0000
- Parent:
- 2:d189b5862909
- Commit message:
- NUEVA VERSION;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Mar 24 08:29:48 2017 +0000 +++ b/main.cpp Tue Jun 25 17:47:43 2019 +0000 @@ -1,71 +1,94 @@ +//PROGAMA PARA CARACTERIZAR CONTROLES REMOTOS INFRARROJOS +//AUN NO DETECTA NUMERO DE BITS, USTED DEBE ADAPATAR EL PROGRANAMA PARA ESO //ESTA VERSION PROPORCIONA EL VECTOR DE LA TECLA PULSADA EN EL SEGUNDO MODO O CON EL SUICHE EN BAJO -//PARA MANDOS DE 31 BITS QUe EN CASO DE SER INCOSTISTENTES SE PUEDEN MODIFICAR +//PARA MANDOS DE 31 BITS QUE EN CASO DE SER INCOSTISTENTES SE PUEDEN MODIFICAR //entrega las dos cabeceras alta y baja segun el modo #include "mbed.h" #include <Pulse1.h> PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo Serial pc(USBTX, USBRX); -DigitalOut led1(LED1); -DigitalOut led2(LED2); -int numN[35];//cadena para almacenar todos los tiempos que conforman los bits de datos -int numP[35];//cadena para almacenar todos los tiempos que conforman los bits de datos -int bin[35];//cadena para almacenar todos los tiempos que conforman los bits de datos -int dato; // tiempo de cada dato que se lee -int pul_low; -int i,j,k,header,proL,proH; + +DigitalOut ledA (LED1); +DigitalOut ledR (LED2); +DigitalOut ledV (LED3); +int numN[45];//cadena para almacenar todos los tiempos que conforman los bits de datos bajos +int numP[45];//cadena para almacenar todos los tiempos que conforman los bits de datos altos +int bin[45];//cadena para almacenar todos los tiempos que conforman los bits de datos solo tiempos en uS +int dato; // tiempo de cada dato que se lee tiempo instantaneo +int pul_low; // pulso bajo +int i,j,k,proL,proH; +int header=0;//cabeceras int r; -int mode=1; +int mode=1;//moddo de lectura int code; -int numb=32; +int numb=44;//numero de bits de la cadena + +//*********************************************************************************************************** int main(){ +ledR=1; +ledA=1; +ledV=0; //prendo led verde............................. +wait(3); //espero 3 segundos pc.printf("\n"); pc.printf("este codigo es para 32 bits de datos"); pc.printf("\n"); -pc.printf("pise reset para otro codigo"); +pc.printf("Al final de esta prueba pise reset para otro codigo"); pc.printf("\n"); -fflush( stdin ); -lop1: if(mode){ - header = irda.read_low_us(); - if(header>8000) goto seguir1; - goto lop1; +fflush( stdin );//limpio buffer de datos usart +lop1: if(mode){ //si el modo es 1 + header = irda.read_low_us();//pregunto por un pulso bajo de mas de 3000 debe ser un header + if(header>3000) goto seguir1; + goto lop1;//repito } lop2: if(!mode){ header = irda.read_high_us(); - if(header>3500) goto seguir2; + if(header>3000) goto seguir2; goto lop2; } seguir1: + ledV=1; + ledA=0; for(i=0;i<numb;++i){ numN[i] = irda.read_low_us(); //funcion para leer un pulso bajo + wait_us(300);//espera sugerida } + pc.printf("Estos de abajo son los pulsos bajos \n"); for(i=0;i<numb;++i){ pc.printf("%d,",numN[i]); - } + } pc.printf("\n"); pc.printf("HeaderL=%d \n",header," uS"); header=0; - for(i=0;i<numb;++i){ + for(i=0;i<numb;++i){//los sumo a todos son de espera proL=numN[i]+proL; } pc.printf("\n"); pc.printf("prom_bajos=%d", proL/numb); pc.printf("\n"); pc.printf("Si el promedio bajos es mas grande de lo normal, baje en numb en el codigo y recompile"); + + for(i=0;i<numb;++i){ + numN[i] = 0; //limpiar arreglo + } - wait(2); header=0; proL=0; pc.printf("\n"); pc.printf("dispare de nuevo para altos"); - mode=!mode; + mode=!mode;//cambio de modo ahora es modo cero.. pc.printf("\n"); - goto lop1; + header=0; + goto lop2; seguir2: + ledA=1; + ledR=0;//prendo led verde + pc.printf("Estos de abajo son los pulsos Altos \n"); for(i=0;i<numb;++i){ numP[i] = irda.read_high_us(); //funcion para leer un pulso alto + wait_us(300); } for(i=0;i<numb;++i){ pc.printf("%d,",numP[i]); @@ -75,6 +98,21 @@ pc.printf("\n"); pc.printf("HeadeH=%d \n",header," uS"); header=0; - wait(2); - goto lop1; + for(i=0;i<numb;++i){ + numP[i] = 0; //limpiar arreglo + } + ledR=1;//apago todos los leds + ledA=1; + ledV=1; + while(1)//de forma infinita oscila led verde + { + ledR=0; + wait_ms(300); + ledR=1; + wait_ms(300); + } + + //goto lop1; } + + \ No newline at end of file