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.
Dependencies: Pulse1 TextLCD mbed
main.cpp
00001 #include "mbed.h" 00002 #include <Pulse1.h> 00003 #include "TextLCD.h" 00004 00005 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 00006 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo 00007 Serial pc(USBTX, USBRX); 00008 DigitalOut led(LED1); 00009 DigitalOut led2(LED2); 00010 DigitalOut led3(LED3); 00011 00012 int header =0; //tiempo de cabecera pulso abajo 00013 const int head_H = 11004; //+20% medida con osciloscopio en microsegundos 00014 const int head_L = 7336;//-20% medida con osciloscopio 00015 int i=0; 00016 const int T_alto=1630;//ponga su tiempo de la prueba 00017 const int T_bajo=433;//ponga su tiempo de la prueba 00018 const int num_bits = 32;//ponga su numero de bits 00019 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos 00020 int sec[num_bits];//cadena para almacenar la cadena codificada en binario 00021 00022 int boton1[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0}; 00023 int boton2[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,1,0}; 00024 int boton3[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,0}; 00025 00026 int flag1,flag2,flag3; //Banderas de boton presionado 00027 int dato; // tiempo de cada dato que se lee 00028 00029 int main() 00030 { 00031 led3=1; 00032 led2=1; 00033 led=1; 00034 while(1) 00035 { 00036 ini1: 00037 header=0; 00038 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo 00039 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% 00040 else goto ini1; 00041 00042 seguir: 00043 //leo los datos de la trama y se meten a un arreglo 00044 wait_us(2000); 00045 for(i=0; i<(num_bits-1); ++i) // POR OSCILOSCOPIO se determina que llegan (num_bits),datos 00046 { 00047 num[i] = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control 00048 wait_us(667); 00049 } 00050 //wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla 00051 pc.printf(",%d",header); 00052 for(i=0; i<num_bits; ++i) 00053 { 00054 pc.printf(",%d",num[i]); 00055 } 00056 //wait(0.1); //espero e imprimo en binario 00057 pc.printf("\n\n"); 00058 00059 for(i=0; i<num_bits; ++i) 00060 { 00061 if(num[i] > ((T_alto+T_bajo)/2)) 00062 { 00063 pc.printf("1"); 00064 sec[i]=1; // guardo la secuancia en binario 00065 } 00066 else 00067 { 00068 sec[i]=0; //guardo la secuencia en binario 00069 pc.printf("0"); 00070 } 00071 } 00072 00073 flag1=1; 00074 flag2=1; 00075 flag3=1; 00076 00077 for(i=0; i<32; ++i) 00078 { 00079 if(sec[i]!=boton1[i]) //en caso de que un bit no coincida se descarta el boton 1 00080 { 00081 flag1=0; 00082 } 00083 if(sec[i]!=boton2[i]) //en caso de que un bit no coincida se descarta el boton 2 00084 { 00085 flag2=0; 00086 } 00087 if(sec[i]!=boton3[i]) //en caso de que un bit no coincida se descarta el boton 3 00088 { 00089 flag3=0; 00090 } 00091 } 00092 if(flag1==1) 00093 { 00094 led3=1; 00095 led2=1; 00096 led=!led; 00097 lcd.cls(); // Borrar Pantalla 00098 lcd.locate(0,0); 00099 lcd.printf("Presionaste 1"); //si coincidieron todos los bits del boton 1 00100 } 00101 else if(flag2==1) 00102 { 00103 led3=1; 00104 led=1; 00105 led2=!led2; 00106 lcd.cls(); // Borrar Pantalla 00107 lcd.locate(0,0); 00108 lcd.printf("Presionaste 2"); //si coincidieron todos los bits del boton 1 00109 } 00110 else if(flag3==1) 00111 { 00112 led2=1; 00113 led=1; 00114 led3=!led3; 00115 lcd.cls(); // Borrar Pantalla 00116 lcd.locate(0,0); 00117 lcd.printf("Presionaste 3"); //si coincidieron todos los bits del boton 1 00118 } 00119 else 00120 { 00121 lcd.cls(); // Borrar Pantalla 00122 lcd.locate(0,0); 00123 lcd.printf("Presionaste otro boton"); //si coincidieron todos los bits del boton 1 00124 } 00125 } 00126 }
Generated on Sat Jul 23 2022 16:15:10 by
1.7.2