Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include <Pulse1.h> 00003 00004 //control remoto SAMSUNG 00005 PulseInOut irda(PTD7);// en este puerto se pone el sensor infrarrojo 00006 Serial pc(USBTX, USBRX); 00007 DigitalOut ab(PTD0); 00008 DigitalOut ce(PTD1); 00009 00010 int header =0; //tiempo de cabecera pulso abajo 00011 const int head_H = 4972; //+10% medida con osciloscopio en microsegundos 00012 const int head_L = 4068;//-10% medida con osciloscopio 00013 int i=0; 00014 const int T_alto = 1680;//ponga su tiempo de la prueba 00015 const int T_bajo = 640;//ponga su tiempo de la prueba 00016 const int num_bits = 32;//ponga su numero de bits 00017 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos 00018 int dato; // tiempo de cada dato que se lee 00019 char v[num_bits]; // vector usado para guardar los datos del boton que se aprete 00020 char vi[num_bits]= {1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1}; // Codigo del boton ON, el cual se usara para encender o apagar la valvula 00021 int con; // Variable auxiliar 00022 00023 int main(){ 00024 while(1){ 00025 ini1: fflush( stdin ); 00026 header=0; 00027 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header 00028 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-10% 00029 else goto ini1; 00030 00031 seguir: 00032 //leo los datos de la trama y se meten a un arreglo 00033 wait_us(4480);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO 00034 for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos 00035 dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control 00036 num[i]=dato; 00037 wait_us(300); //////////// 00038 } 00039 wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla 00040 pc.printf("\n\n"); 00041 for(i=0;i<(num_bits-1);++i){ 00042 if(num[i] > ((T_alto+T_bajo)/2)){ 00043 pc.printf("1"); 00044 v[i]=1; // Guarda 1 en las posiciones del vector donde el pulso es alto 00045 } 00046 else { 00047 pc.printf("0"); 00048 v[i]=0; // Guarda 0 en las posiciones del vector donde el pulso es bajo 00049 } 00050 } 00051 con=0; 00052 for (i=0; i<(num_bits-1);++i){ 00053 if (vi[i]==v[i]){ // Comparación de los codigos 00054 con=con+1; // Si la posición de los vectores es igual aumenta el contador 00055 } 00056 } 00057 if (con==(num_bits-1)){ // Si el contador es igual al numero de bits, indica que la cadena es correcta 00058 ab=1; 00059 ce=0; 00060 pc.printf("\nAbriendo valvula\n"); 00061 wait(6); 00062 ab=0; 00063 ce=1; 00064 pc.printf("Cerrando valvula\n"); 00065 wait(2); 00066 ab=0; 00067 ce=0; 00068 00069 } 00070 else{ // Si el contador es diferente, la cadena es incorrecta 00071 ab=0; 00072 ce=0; 00073 pc.printf("\nTecla equivocada"); 00074 } 00075 } 00076 }
Generated on Wed Aug 3 2022 03:35:59 by
1.7.2