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

Dependencies:   mbed Pulse1

Files at this revision

API Documentation at this revision

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