Sebastian Quintero Zapata
/
IRDA_Control_Sony
En este archivo se encuentra la tarea del control remoto (Sony) haciendo uso del IRDA
Revision 0:4c98a66f8458, committed 2015-11-23
- Comitter:
- squinteroz
- Date:
- Mon Nov 23 03:16:01 2015 +0000
- Commit message:
- En este archivo se encuentra la tarea del control remoto (Sony) haciendo uso del IRDA
Changed in this revision
diff -r 000000000000 -r 4c98a66f8458 Pulse1.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Pulse1.lib Mon Nov 23 03:16:01 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/tony63/code/Pulse1/#48651f86a80c
diff -r 000000000000 -r 4c98a66f8458 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Nov 23 03:16:01 2015 +0000 @@ -0,0 +1,113 @@ +#include "mbed.h" +#include <Pulse1.h> +#include <string.h> +//control remoto videobeam aula +PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo +Serial pc(USBTX, USBRX); +PwmOut l0(PTD0); +DigitalOut l1(PTD2); +DigitalOut l2(LED2); +//PwmOut pwmLed(LED1); + +int header =0; +const int head_H = 2880; //+20% medida con osciloscopio en microsegundos +const int head_L = 1920;//-20% medida con osciloscopio +int i=0; +const int T_alto=567;//ponga su tiempo de la prueba +const int T_bajo=1170;//ponga su tiempo de la prueba +const int num_bits = 21;//ponga su numero de bits +int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos +int aux[21]; +int dato,prender,subir,bajar,k; // tiempo de cada dato que se lee; // tiempo de cada dato que se lee + + +int powerSONY[]= {0,1,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,0,1,0,1}; //Boton para prender y apagar +int subirDVD[] ={1,0,0,1,1,1,1,0,1,0,1,1,1,0,0,1,0,0,1,0,1}; //Boton para aumentar el PWM +int bajarDVD[]={0,1,0,1,1,1,1,0,1,0,1,1,1,0,0,1,0,0,1,0,1}; //Boton para disminuir el PWM + +int main(){ +//pwmLed=0; + + while(1){ + +ini1: + fflush( stdin ); + header=0; + //l1=1; + header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo + if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% + else goto ini1; + +seguir: + wait_us(333); + //l1=0; + for(i=0;i<=(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos + dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control + num[i]=dato; + wait_us(333); + } + + wait(0.5); //espero un poquito antes 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 + pc.printf("\n\n");//imprimo en binario + for(i=0;i<=(num_bits-1);++i){ + if(num[i] > ((T_alto+T_bajo)/2)){ + pc.printf("1"); + aux[i]=1; + } + else { + pc.printf("0"); + aux[i]=0; + } + } + + prender=0; + subir=0; + bajar=0; + + if(aux[0]==powerSONY[0]&&aux[1]==powerSONY[1]&&aux[2]==powerSONY[2]&&aux[3]==powerSONY[3]&&aux[4]==powerSONY[4]&&aux[5]==powerSONY[5]&&aux[6]==powerSONY[6]&&aux[7]==powerSONY[7]){ + //Se compara uno por uno de los 8 bits a comparar + prender=21; //Se asigna un valor a la variable de prender, se llamará despues + pc.printf("ON");//Muestra en pantalla que se prendió + } + if(aux[0]==subirDVD[0]&&aux[1]==subirDVD[1]&&aux[2]==subirDVD[2]&&aux[3]==subirDVD[3]&&aux[4]==subirDVD[4]&&aux[5]==subirDVD[5]&&aux[6]==subirDVD[6]&&aux[7]==subirDVD[7]){ + //Se compara uno por uno de los 8 bits a comparar + subir=21;//Se asigna un valor a la variable de subir, se llamará despues + pc.printf("UP");//Muestra en terminal, que esta aumentando el PWM + } + if(aux[0]==bajarDVD[0]&&aux[1]==bajarDVD[1]&&aux[2]==bajarDVD[2]&&aux[3]==bajarDVD[3]&&aux[4]==bajarDVD[4]&&aux[5]==bajarDVD[5]&&aux[6]==bajarDVD[6]&&aux[7]==bajarDVD[7]){ + //Se compara uno por uno de los 8 bits a comparar + bajar=21;//Se asigna un valor a la variable de bajar, se llamará despues + pc.printf("DOWN");//Muestra en terminal, que esta disminuyendo el PWM + } + + + if (l1==0 && prender==21){ + l1=1; + l0=1; + //Si se apreto el boton de prender y el sistema esta apagado, enciende, y visceversa + } + else if (l1==1 && prender==21){ + l1=0; + l0=0; + } + + if (subir==21 && l0<1){ + if (l0>=1) l0=1; + l0=l0+0.15; + //Si se apreto el boton de subir y el sistema aumenta el PWM. + } + + if (bajar==21 && 0<l0){ + if (l0<=0) l0=0; + l0=l0-0.15; + //Si se apreto el boton de bajar y el sistema disminuye el PWM. + } + } +} \ No newline at end of file
diff -r 000000000000 -r 4c98a66f8458 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Nov 23 03:16:01 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/f37f3b9c9f0b \ No newline at end of file