Control de la intensidad luminosa de un led con control remoto Samsung

Dependencies:   Pulse1 mbed

Revision:
0:9727a355c3cd
Child:
1:e8170a2014a1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 10 21:50:53 2015 +0000
@@ -0,0 +1,121 @@
+#include "mbed.h"
+#include <Pulse1.h>
+
+//control remoto 
+PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
+Serial pc(USBTX, USBRX);
+//DigitalOut ledazul(LED1);
+//DigitalOut led2(LED2);
+PwmOut ledazul(LED1);
+
+
+int header =0; //tiempo de cabecera pulso abajo
+const int head_H = 9900; //+10% medida con osciloscopio en microsegundos  9000
+const int head_L = 4983;//-10%  medida con osciloscopio   4530
+int i=0, u=0, y=0;
+const int T_alto=1630;//ponga su tiempo de la prueba
+const int T_bajo=600;//ponga su tiempo de la prueba
+const int num_bits = 42;//ponga su numero de bits
+int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
+int dato,prender,aumentar,disminuir,j=0; // tiempo de cada dato que se lee
+int var[42];
+
+
+float brightness=0;
+float brightness1=1;
+
+int main(){
+    ledazul = 0;
+    
+    while(1){
+    ini1: fflush( stdin );
+          header=0;
+          
+          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:
+           //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 
+  
+          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(430);   
+              
+          }
+          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");
+                var[i]=1;
+            }
+                
+          else { 
+              pc.printf("0");
+              var[i]=0;
+          }         
+        }
+        
+        int power[] = {0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,0,1,1};  
+        int mas[] =  {0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1};  
+        int menos[] = {0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1};
+   
+        prender=0; 
+        aumentar=0;
+        disminuir=0;
+         
+        for(i=0;i<=(num_bits-1);i++){ 
+                 if(var[i]==power[i]){
+                    prender++;
+                 }
+                 if(var[i]==mas[i]){
+                    aumentar++;
+                 }
+                 if(var[i]==menos[i]){
+                   
+                    disminuir++;
+                 }
+        }
+                     
+    if (ledazul==0 && prender==42){
+            ledazul=1;
+        }
+        else if(ledazul==1 && prender==42){
+            ledazul=0;
+        }
+        
+        
+       if(aumentar==42) {
+                if (brightness < 1){
+                brightness += 0.1;
+                } 
+                else {
+                    brightness = 1;     
+                    }
+                
+              ledazul = brightness;
+           }
+           
+        if(disminuir==42) {
+                if (brightness > 0 ){
+                brightness -= 0.1;
+                } 
+                else {
+                    brightness = 0;
+                   }
+                
+              ledazul = brightness;
+           } 
+        
+           
+}
+}
\ No newline at end of file