Melissa Elorza
/
Control_Remoto
Control de la intensidad luminosa de un led con control remoto Samsung
Diff: main.cpp
- Revision:
- 0:9727a355c3cd
- Child:
- 1:e8170a2014a1
diff -r 000000000000 -r 9727a355c3cd main.cpp --- /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