/control remoto sony disparo camara //puede convertir la trama en un entero //para cualquier tecla
Fork of irda_V_aula by
main.cpp
00001 #include "mbed.h" 00002 #include <Pulse1.h> 00003 #include "stdio.h" 00004 #include "math.h" 00005 //control remoto sony disparo camara 00006 //puede convertir la trama en un entero 00007 //para cualquier tecla 00008 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo 00009 Serial pc(USBTX, USBRX); 00010 DigitalOut led(LED1); 00011 DigitalOut led2(LED2); 00012 int header =0; //tiempo de cabecera pulso abajo 00013 const int head_H = 2976; //+10% medida con osciloscopio en microsegundos 00014 const int head_L = 1984;//-10% medida con osciloscopio 00015 int i=0, bin, potencia; 00016 const int T_alto=1200;//ponga su tiempo de la prueba 00017 const int T_bajo=639;//ponga su tiempo de la prueba 00018 const int num_bits = 20;//ponga su numero de bits 00019 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos 00020 int dato; // tiempo de cada dato que se lee 00021 int numero; 00022 int binM[20]; 00023 int bin_max[20]; 00024 00025 00026 00027 int main(){ 00028 while(1){ 00029 ini1: fflush( stdin ); 00030 header=0; 00031 led2=1; 00032 led=1; 00033 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header 00034 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% 00035 else goto ini1; 00036 00037 seguir: 00038 //leo los datos de la trama y se meten a un arreglo 00039 wait_us(400);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO 00040 led2=1; 00041 for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos 00042 dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control 00043 num[i]=dato; 00044 wait_us(400); 00045 } 00046 wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla 00047 //pc.printf(",%d",header); 00048 for(i=0;i<(num_bits-1);++i){ 00049 //pc.printf(",%d",num[i]); 00050 } 00051 wait(0.1); //espero e imprimo en binario 00052 //pc.printf("\n\n"); 00053 for(i=0;i<(num_bits-1);++i){ 00054 if(num[i] > ((T_alto+T_bajo)/2)){ 00055 bin_max[i]=1; 00056 } 00057 else{ 00058 bin_max[i]=0; 00059 } 00060 00061 } 00062 binM[0]=1; 00063 for(i=1;i<(num_bits-1);++i){ 00064 binM[i]=binM[i-1]*2; 00065 00066 } 00067 numero=0; 00068 for(i=0;i<(num_bits-1);++i){ 00069 00070 numero=numero+(binM[i]*bin_max[i]); 00071 00072 } 00073 pc.printf("numero=%d",numero); 00074 if (numero==466221){ 00075 led2=0; 00076 wait(4); 00077 led2=1; 00078 goto ini1; 00079 } 00080 if (numero==466231){ 00081 led=0; 00082 wait(4); 00083 led=1; 00084 goto ini1; 00085 } 00086 } 00087 }
Generated on Wed Jul 13 2022 18:04:05 by 1.7.2