![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
por medio de un control remoto y tres de sus botones se enciende un led diferente con cada botón, se muestra el numero de bits, su código, tiempo de duración de la cabecera y tiempos de duración en unos y ceros.
Dependencies: Pulse1 TextLCD mbed
main.cpp
- Committer:
- lopjohn_26
- Date:
- 2014-05-16
- Revision:
- 0:0239a53cf648
File content as of revision 0:0239a53cf648:
#include "mbed.h" #include <Pulse1.h> #include "TextLCD.h" // //JUAN ESTEBAN alcance a realizar algo más del codigo mientras estaba en el hospital, el codigo ademas de apagar y prender el led, //muestra el codigo del boton y el numero de bits. //control remoto PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo Serial pc(USBTX, USBRX); TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); //Puertos LCD rs, e, d4, d5, d6, d7 DigitalOut led3(LED3); DigitalOut led4(LED2); // aqui se configuran las salidas donde a donde se conectan los leds DigitalOut led5(LED1); int header =0; //tiempo de cabecera pulso abajo const int head_H = 2860; //+10% medida con osciloscopio en microsegundos const int head_L = 2340;//-10% medida con osciloscopio int i=0; const int T_alto=1370;//ponga su tiempo de la prueba const int T_bajo=733;//ponga su tiempo de la prueba const int num_bits = 7;//ponga su numero de bits int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos int numb[num_bits]; // cadena para almacenar los bits int num1[] = {1,0,1,0,1,0,0}; int num2[] = {0,1,1,0,1,1,0}; // aqui se configura la trama de bit que representa al boton 1, 2 y 3. int num3[] = {0,0,1,0,1,0,0}; int suma1=0; int suma2=0; int suma3=0; int s1t, s2t; int dato; // tiempo de cada dato que se lee int main(){ led3=1; led4=1; led5=1; while(1){ int s1 = 0; int s2 = 0; int p = 0; int q = 0; suma1=suma2=suma3=0; 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(570);// 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_low_us(); //leer un bit de datos que es pulso arriba en este control num[i]=dato; wait_us(300); } 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"); s1 = num[i] + s1; p++; } else{ pc.printf("0"); s2 = num[i] + s2; q++; } } s1t = s1/p; s2t = s2/q; for(i=0;i<=(num_bits-1);++i){ if (num[i] > ((T_alto+T_bajo)/2)) numb[i]=1; else numb[i]=0; } for(i=0;i<=(num_bits-1);++i){ if (numb[i] == num1[i]) suma1++; if (numb[i] == num2[i]) suma2++; if (numb[i] == num3[i]) suma3++; } pc.printf("%d,%d,%d\n", suma1, suma2, suma3); if (suma1 == num_bits){ lcd.cls(); led3 = !led3; lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD lcd.printf("#bits"); lcd.locate(0,1); lcd.printf("codigo="); lcd.locate(5,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",num_bits); lcd.locate(6,0); lcd.printf("%d",num_bits); lcd.locate(6,1); //------------- Ubica e imprime el parámetro "codigo" en la pantalla LCD lcd.printf("=1010100"); wait(1); lcd.cls(); lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD lcd.printf("header="); lcd.locate(0,1); lcd.printf("t1="); lcd.locate(8,1); lcd.printf("t0="); lcd.locate(6,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",header); lcd.locate(7,0); lcd.printf("%d",header); lcd.locate(2,1); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",s1t); lcd.locate(3,1); lcd.printf("%d",s1t); lcd.locate(10,1); lcd.printf("= ",s2t); lcd.locate(11,1); lcd.printf("%d",s2t); } if (suma2 == num_bits){ lcd.cls(); led4 = !led4; lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD lcd.printf("#bits"); lcd.locate(0,1); lcd.printf("codigo="); lcd.locate(5,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",num_bits); lcd.locate(6,0); lcd.printf("%d",num_bits); lcd.locate(6,1); //------------- Ubica e imprime el parámetro "codigo" en la pantalla LCD lcd.printf("=0110110"); wait(1); lcd.cls(); lcd.locate(0,0); // Ubica e imprime nombre de los tiempos en la pantalla LCD lcd.printf("header="); lcd.locate(0,1); lcd.printf("t1="); lcd.locate(8,1); lcd.printf("t0="); lcd.locate(6,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",header); lcd.locate(7,0); lcd.printf("%d",header); lcd.locate(2,1); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",s1t); lcd.locate(3,1); lcd.printf("%d",s1t); lcd.locate(10,1); lcd.printf("= ",s2t); lcd.locate(11,1); lcd.printf("%d",s2t); } if (suma3 == num_bits){ lcd.cls(); led5 = !led5; lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD lcd.printf("#bits"); lcd.locate(0,1); lcd.printf("codigo="); lcd.locate(5,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",num_bits); lcd.locate(6,0); lcd.printf("%d",num_bits); lcd.locate(6,1); //------------- Ubica e imprime el parámetro "codigo" en la pantalla LCD lcd.printf("=0010100"); wait(1); lcd.cls(); lcd.locate(0,0); // Ubica e imprime nombre de los parámetros en del control en la pantalla LCD lcd.printf("header="); lcd.locate(0,1); lcd.printf("t1="); lcd.locate(8,1); lcd.printf("t0="); lcd.locate(6,0); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",header); lcd.locate(7,0); lcd.printf("%d",header); lcd.locate(2,1); //------------- Ubica e imprime el parámetro "#bits" en la pantalla LCD lcd.printf("= ",s1t); lcd.locate(3,1); lcd.printf("%d",s1t); lcd.locate(10,1); lcd.printf("= ",s2t); lcd.locate(11,1); lcd.printf("%d",s2t); } } }