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
main.cpp@3:a63a363d9b95, 2019-06-25 (annotated)
- Committer:
- tony63
- Date:
- Tue Jun 25 17:47:43 2019 +0000
- Revision:
- 3:a63a363d9b95
- Parent:
- 2:d189b5862909
NUEVA VERSION;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tony63 | 3:a63a363d9b95 | 1 | //PROGAMA PARA CARACTERIZAR CONTROLES REMOTOS INFRARROJOS |
tony63 | 3:a63a363d9b95 | 2 | //AUN NO DETECTA NUMERO DE BITS, USTED DEBE ADAPATAR EL PROGRANAMA PARA ESO |
tony63 | 2:d189b5862909 | 3 | //ESTA VERSION PROPORCIONA EL VECTOR DE LA TECLA PULSADA EN EL SEGUNDO MODO O CON EL SUICHE EN BAJO |
tony63 | 3:a63a363d9b95 | 4 | //PARA MANDOS DE 31 BITS QUE EN CASO DE SER INCOSTISTENTES SE PUEDEN MODIFICAR |
tony63 | 2:d189b5862909 | 5 | //entrega las dos cabeceras alta y baja segun el modo |
tony63 | 0:86c0c1652dd4 | 6 | #include "mbed.h" |
tony63 | 0:86c0c1652dd4 | 7 | #include <Pulse1.h> |
tony63 | 0:86c0c1652dd4 | 8 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
tony63 | 0:86c0c1652dd4 | 9 | |
tony63 | 0:86c0c1652dd4 | 10 | Serial pc(USBTX, USBRX); |
tony63 | 3:a63a363d9b95 | 11 | |
tony63 | 3:a63a363d9b95 | 12 | DigitalOut ledA (LED1); |
tony63 | 3:a63a363d9b95 | 13 | DigitalOut ledR (LED2); |
tony63 | 3:a63a363d9b95 | 14 | DigitalOut ledV (LED3); |
tony63 | 3:a63a363d9b95 | 15 | int numN[45];//cadena para almacenar todos los tiempos que conforman los bits de datos bajos |
tony63 | 3:a63a363d9b95 | 16 | int numP[45];//cadena para almacenar todos los tiempos que conforman los bits de datos altos |
tony63 | 3:a63a363d9b95 | 17 | int bin[45];//cadena para almacenar todos los tiempos que conforman los bits de datos solo tiempos en uS |
tony63 | 3:a63a363d9b95 | 18 | int dato; // tiempo de cada dato que se lee tiempo instantaneo |
tony63 | 3:a63a363d9b95 | 19 | int pul_low; // pulso bajo |
tony63 | 3:a63a363d9b95 | 20 | int i,j,k,proL,proH; |
tony63 | 3:a63a363d9b95 | 21 | int header=0;//cabeceras |
tony63 | 1:69f833c768c8 | 22 | int r; |
tony63 | 3:a63a363d9b95 | 23 | int mode=1;//moddo de lectura |
tony63 | 2:d189b5862909 | 24 | int code; |
tony63 | 3:a63a363d9b95 | 25 | int numb=44;//numero de bits de la cadena |
tony63 | 3:a63a363d9b95 | 26 | |
tony63 | 3:a63a363d9b95 | 27 | //*********************************************************************************************************** |
tony63 | 0:86c0c1652dd4 | 28 | int main(){ |
tony63 | 3:a63a363d9b95 | 29 | ledR=1; |
tony63 | 3:a63a363d9b95 | 30 | ledA=1; |
tony63 | 3:a63a363d9b95 | 31 | ledV=0; //prendo led verde............................. |
tony63 | 3:a63a363d9b95 | 32 | wait(3); //espero 3 segundos |
tony63 | 2:d189b5862909 | 33 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 34 | pc.printf("este codigo es para 32 bits de datos"); |
tony63 | 2:d189b5862909 | 35 | pc.printf("\n"); |
tony63 | 3:a63a363d9b95 | 36 | pc.printf("Al final de esta prueba pise reset para otro codigo"); |
tony63 | 2:d189b5862909 | 37 | pc.printf("\n"); |
tony63 | 3:a63a363d9b95 | 38 | fflush( stdin );//limpio buffer de datos usart |
tony63 | 3:a63a363d9b95 | 39 | lop1: if(mode){ //si el modo es 1 |
tony63 | 3:a63a363d9b95 | 40 | header = irda.read_low_us();//pregunto por un pulso bajo de mas de 3000 debe ser un header |
tony63 | 3:a63a363d9b95 | 41 | if(header>3000) goto seguir1; |
tony63 | 3:a63a363d9b95 | 42 | goto lop1;//repito |
tony63 | 2:d189b5862909 | 43 | } |
tony63 | 2:d189b5862909 | 44 | |
tony63 | 2:d189b5862909 | 45 | lop2: if(!mode){ |
tony63 | 2:d189b5862909 | 46 | header = irda.read_high_us(); |
tony63 | 3:a63a363d9b95 | 47 | if(header>3000) goto seguir2; |
tony63 | 2:d189b5862909 | 48 | goto lop2; |
tony63 | 2:d189b5862909 | 49 | } |
tony63 | 0:86c0c1652dd4 | 50 | |
tony63 | 2:d189b5862909 | 51 | seguir1: |
tony63 | 3:a63a363d9b95 | 52 | ledV=1; |
tony63 | 3:a63a363d9b95 | 53 | ledA=0; |
tony63 | 2:d189b5862909 | 54 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 55 | numN[i] = irda.read_low_us(); //funcion para leer un pulso bajo |
tony63 | 3:a63a363d9b95 | 56 | wait_us(300);//espera sugerida |
tony63 | 2:d189b5862909 | 57 | } |
tony63 | 3:a63a363d9b95 | 58 | pc.printf("Estos de abajo son los pulsos bajos \n"); |
tony63 | 2:d189b5862909 | 59 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 60 | pc.printf("%d,",numN[i]); |
tony63 | 3:a63a363d9b95 | 61 | } |
tony63 | 2:d189b5862909 | 62 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 63 | pc.printf("HeaderL=%d \n",header," uS"); |
tony63 | 2:d189b5862909 | 64 | header=0; |
tony63 | 3:a63a363d9b95 | 65 | for(i=0;i<numb;++i){//los sumo a todos son de espera |
tony63 | 2:d189b5862909 | 66 | proL=numN[i]+proL; |
tony63 | 2:d189b5862909 | 67 | } |
tony63 | 2:d189b5862909 | 68 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 69 | pc.printf("prom_bajos=%d", proL/numb); |
tony63 | 2:d189b5862909 | 70 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 71 | pc.printf("Si el promedio bajos es mas grande de lo normal, baje en numb en el codigo y recompile"); |
tony63 | 3:a63a363d9b95 | 72 | |
tony63 | 3:a63a363d9b95 | 73 | for(i=0;i<numb;++i){ |
tony63 | 3:a63a363d9b95 | 74 | numN[i] = 0; //limpiar arreglo |
tony63 | 3:a63a363d9b95 | 75 | } |
tony63 | 2:d189b5862909 | 76 | |
tony63 | 2:d189b5862909 | 77 | header=0; |
tony63 | 2:d189b5862909 | 78 | proL=0; |
tony63 | 2:d189b5862909 | 79 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 80 | pc.printf("dispare de nuevo para altos"); |
tony63 | 3:a63a363d9b95 | 81 | mode=!mode;//cambio de modo ahora es modo cero.. |
tony63 | 2:d189b5862909 | 82 | pc.printf("\n"); |
tony63 | 3:a63a363d9b95 | 83 | header=0; |
tony63 | 3:a63a363d9b95 | 84 | goto lop2; |
tony63 | 2:d189b5862909 | 85 | seguir2: |
tony63 | 3:a63a363d9b95 | 86 | ledA=1; |
tony63 | 3:a63a363d9b95 | 87 | ledR=0;//prendo led verde |
tony63 | 3:a63a363d9b95 | 88 | pc.printf("Estos de abajo son los pulsos Altos \n"); |
tony63 | 2:d189b5862909 | 89 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 90 | numP[i] = irda.read_high_us(); //funcion para leer un pulso alto |
tony63 | 3:a63a363d9b95 | 91 | wait_us(300); |
tony63 | 2:d189b5862909 | 92 | } |
tony63 | 2:d189b5862909 | 93 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 94 | pc.printf("%d,",numP[i]); |
tony63 | 2:d189b5862909 | 95 | } |
tony63 | 2:d189b5862909 | 96 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 97 | pc.printf("copie esta cadena de arriba en su programa"); |
tony63 | 2:d189b5862909 | 98 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 99 | pc.printf("HeadeH=%d \n",header," uS"); |
tony63 | 2:d189b5862909 | 100 | header=0; |
tony63 | 3:a63a363d9b95 | 101 | for(i=0;i<numb;++i){ |
tony63 | 3:a63a363d9b95 | 102 | numP[i] = 0; //limpiar arreglo |
tony63 | 3:a63a363d9b95 | 103 | } |
tony63 | 3:a63a363d9b95 | 104 | ledR=1;//apago todos los leds |
tony63 | 3:a63a363d9b95 | 105 | ledA=1; |
tony63 | 3:a63a363d9b95 | 106 | ledV=1; |
tony63 | 3:a63a363d9b95 | 107 | while(1)//de forma infinita oscila led verde |
tony63 | 3:a63a363d9b95 | 108 | { |
tony63 | 3:a63a363d9b95 | 109 | ledR=0; |
tony63 | 3:a63a363d9b95 | 110 | wait_ms(300); |
tony63 | 3:a63a363d9b95 | 111 | ledR=1; |
tony63 | 3:a63a363d9b95 | 112 | wait_ms(300); |
tony63 | 3:a63a363d9b95 | 113 | } |
tony63 | 3:a63a363d9b95 | 114 | |
tony63 | 3:a63a363d9b95 | 115 | //goto lop1; |
tony63 | 2:d189b5862909 | 116 | } |
tony63 | 3:a63a363d9b95 | 117 | |
tony63 | 3:a63a363d9b95 | 118 |