![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Control de la intensidad luminosa de un led con control remoto Samsung
main.cpp
- Committer:
- Meli
- Date:
- 2015-11-23
- Revision:
- 1:e8170a2014a1
- Parent:
- 0:9727a355c3cd
File content as of revision 1:e8170a2014a1:
#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.2; } else { brightness = 1; } ledazul = brightness; } if(disminuir==42) { if ( 1< brightness1){ brightness1 -= 0.1; } else { brightness1 = 1; } ledazul = brightness1; } }}