Tarea 6 Procesadores_Infrarojo Ernesto Jose Guevara Sequeda Juan Salvador Payares Iriarte

Dependencies:   DebouncedIn Pulse1 TextLCD mbed

Fork of irda_V_aula by Gustavo Ramirez

Files at this revision

API Documentation at this revision

Comitter:
payarito32
Date:
Fri May 16 16:24:02 2014 +0000
Parent:
3:82bebaf2a06a
Commit message:
Tarea 6 Procesadores_Infrarojo

Changed in this revision

DebouncedIn.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DebouncedIn.lib	Fri May 16 16:24:02 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/cmorab/code/DebouncedIn/#dc1131de43e8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Fri May 16 16:24:02 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/lcorralesc1/code/TextLCD/#0e0132807662
--- a/main.cpp	Thu May 08 00:38:39 2014 +0000
+++ b/main.cpp	Fri May 16 16:24:02 2014 +0000
@@ -1,49 +1,287 @@
 #include "mbed.h"
 #include <Pulse1.h>
+#include "TextLCD.h"
+#include "math.h"
+#include "stdio.h"
+#include "DebouncedIn.h"
+
 //control remoto videobeam aula
 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
 Serial pc(USBTX, USBRX);
-DigitalOut led(LED1);
-DigitalOut led2(LED2);
+//DigitalOut led(LED1);
+//DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+DigitalOut led5(LED1);
+bool encendido1; //Banderas de indicacin led encendido
+bool encendido2;
+bool encendido3;
+int decimal;
+int i; 
+int c2=3;
+float  p;
+float c;
+int potencia=1;
 int header =0; //tiempo de cabecera pulso abajo
-const int head_H = 9120; //+10% medida con osciloscopio en microsegundos
-const int head_L = 8939;//-10%  medida con osciloscopio
-int i=0;
-const int T_alto=1630;//ponga su tiempo de la prueba
-const int T_bajo=533;//ponga su tiempo de la prueba
+const int head_H = 4500+450; //+10% medida con osciloscopio en microsegundos
+const int head_L = 4500-450;//-10%  medida con osciloscopio
+
+const int T_alto=1600;//ponga su tiempo de la prueba
+const int T_bajo=560;//ponga su tiempo de la prueba
 const int num_bits = 64;//ponga su numero de bits
 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
 int dato; // tiempo de cada dato que se lee
-  
+TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); 
+int dec[64];
+int j;
+int bit1;
+int bit0;
+//entradas
+int t=0;
+
+DebouncedIn p1(PTC3);
+DebouncedIn p2(PTC4);
+DebouncedIn p3(PTC5);
+
 int main(){
-while(1){
-ini1: fflush( stdin );
-      header=0;
-      led2=1;
-      led=1;
-      header = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
-      if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
-      else goto ini1;
+
+lcd.printf("COMENZAR");
+lcd.locate(0,0);
+    while(1){
+            
+            ini1: fflush( stdin );
+                  header=0;
+                  
+                 // led=1;
+                  header = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
+                  if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
+                  else goto ini1;
+                  
+            seguir:
+                  lcd.cls();
+                  decimal = 0; 
+                  
+                   //leo los datos de la trama y se meten a un arreglo
+                  wait_us(4500);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO 
+                 // led2=0;
+                  
+                  
+                  for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
+                  dato = irda.read_high_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 luego de leer todo el areglo 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");
+                  
+                  lcd.locate(0,0);
+                  for(i=42;i<(num_bits-1);++i){  
+                    
+                          if(num[i] > ((T_alto+T_bajo)/2)){
+                               //lcd.printf("%d", 1);
+                               dec[i]=1;
+                               bit1 = num[i];
+                               //potencia de 2
+                               
+                                  
+                               }else{
+                               //     lcd.printf("%d", 0);
+                                    dec[i] = 0;
+                                    bit0 = num[i];
+                                    }
+                                       
+                             
+                             // lcd.printf("Bits Fin: %d %d",dec[i-1],dec[i-2]);
+                                    
+                          }//cierro for
+                          
+                          //Utilizo
+                          c=0;
+                          for(i=42; i<=63;++i){
+                              if(dec[i] == 1){
+                                  p = c; 
+                                  float potencia = 1;
+                               
+                                 for(j = 1; j <= p; ++j){
+                                     potencia = potencia*2;
+                                     }
+                                    if(p ==0){
+                                        potencia=1;
+                                        }
+                               decimal = decimal + potencia;   
+                               }//fin if
+                               c++;
+                            }//Fin for
+                            
+                          //lcd.printf("%10d", decimal);
+                          
+                          if(decimal == 1933827){
+                              if(encendido2 == false && encendido3 == false){
+                              
+                              
+                              c2= c2+1;
+                              
+                                      if(c2 % 2 != 0){
+                                      led3=0;
+                                      lcd.printf("Tecla 1 ON"); 
+                                      encendido1 = true;
+                                      }else{
+                                          led3=1;
+                                          encendido1 = false; 
+                                          lcd.printf("Tecla 1 OFF"); 
+                                          }//Fin else C2 %2 =0
+                                      
+                              }else{
+                                lcd.cls(); 
+                                lcd.printf("Boton Incorrecto!"); 
+                                  }//cierro else
+                              
+                              ++t;
+                                if(t==1){
+                                lcd.locate(0,1);
+                                lcd.printf("Cabecera H: %d ", header);
+                                }
+                                
+                                if(t==2){
+                                lcd.locate(0,1);
+                                lcd.printf("T Alto: %d ", bit1);
+                                
+                                }
+                                if(t==3){
+                                lcd.locate(0,1);
+                                lcd.printf("T Bajo: %d ", bit0);
+                                    t=0;
+                                    }
+                              }//cierro if decimal 1
+                          
+                          if(decimal == 1607427){
+                                  if(encendido1 ==  false && encendido3 == false){
+                                      
+                                      c2= c2+1;
+                                      encendido2= true;
+                                          if(c2 % 2 != 0){
+                                        lcd.printf("Tecla 9 ON"); 
+                                          led4=0;
+                                          }else{
+                                              led4=1;
+                                              encendido2 = false; 
+                                              lcd.printf("Tecla 9 OFF"); 
+                                              }
+                                    }else{
+                                          lcd.cls(); 
+                                          lcd.printf("Boton Incorrecto!"); 
+                                            }
+                                            
+                                            
+                              
+                              ++t;
+                                if(t==1){
+                                lcd.locate(0,1);
+                                lcd.printf("Cabecera H: %d ", header);
+                                }
+                                
+                                if(t==2){
+                                lcd.locate(0,1);
+                                lcd.printf("T Alto: %d ", bit1);
+                                
+                                }
+                                if(t==3){
+                                lcd.locate(0,1);
+                                lcd.printf("T Bajo: %d ", bit0);
+                                    t=0;
+                                    }
+                                    }// fin decimal 9
+                                      
+                                      
+                          if(decimal == 1640067){
+                              if(encendido1 ==  false && encendido2 == false){
+                              
+                              c2= c2+1;
+                              encendido3 = true;
+                                  if(c2 % 2 != 0){
+                                  led5=0;
+                                 lcd.printf("Tecla 8 ON"); 
+                                  }else{
+                                      led5=1;
+                                      encendido3 = false;
+                                    lcd.printf("Tecla 8 OFF"); 
+                                      }
+                              
+                              }else{
+                              lcd.cls(); 
+                              lcd.printf("Boton Incorrecto!"); 
+                              
+                              }
+                              
+                              
+                              ++t;
+                                if(t==1){
+                                lcd.locate(0,1);
+                                lcd.printf("Cabecera H: %d ", header);
+                                }
+                                
+                                if(t==2){
+                                lcd.locate(0,1);
+                                lcd.printf("T Alto: %d ", bit1);
+                                
+                                }
+                                if(t==3){
+                                lcd.locate(0,1);
+                                lcd.printf("T Bajo: %d ", bit0);
+                                    t=0;
+                                    }
+                              }//cierro if decimal 8
+                                                        
+                                                
+                                
+                  
+                              }//cierro while
+                            
+                                    
+                                  if(p1.falling()){
+                                ++t;
+                                if(t==1){
+                                lcd.cls();
+                                
+                                }//T1
+                              
+                                if(t==2){
+                                lcd.cls();
+                                lcd.locate(0,0);
+                                lcd.printf("T_alto: %d ", bit1);
+                                lcd.locate(0,1);
+                                lcd.printf("T_bajo: %d ", bit0);
+                                t=0; 
+                                }//T1
+                                                   
+                                                   
+                                                   }
+                                                                                      
+                                
+                                if(p2.falling()){
+                                lcd.cls();
+                                
+                                lcd.printf("%d  %d", t, num[t]);
+                                lcd.locate(0,1);
+                                lcd.printf("%d  %d", t+1, num[t+1]);
+                                }
+                                                   
+                                
+                              //Fin pulsadores
+                                  
+                          
       
-seguir:
-       //leo los datos de la trama y se meten a un arreglo
-      wait_us(4500);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO 
-      led2=0;
-      for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
-      dato = irda.read_high_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 luego 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)) pc.printf("1");
-      else pc.printf("0");
-      }
-      }
-      }
\ No newline at end of file
+      
+      
+      
+      
\ No newline at end of file