Encendido y apagado de luz led haciendo uso de un control remoto

Dependencies:   Pulse1 TextLCD mbed

Fork of Tarea_6_control_remoto by Mauricio Escobar

Committer:
mescobart22
Date:
Thu Jun 05 18:35:33 2014 +0000
Revision:
1:be954ee8585a
Parent:
0:f25302b74b6f
Tarea 6 encendido y apagado de un led desde un control remoto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mescobart22 0:f25302b74b6f 1 #include "mbed.h"
mescobart22 0:f25302b74b6f 2 #include <Pulse1.h>
mescobart22 0:f25302b74b6f 3 #include "TextLCD.h"
mescobart22 0:f25302b74b6f 4
mescobart22 0:f25302b74b6f 5
mescobart22 0:f25302b74b6f 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7#include "TextLCD.h"
mescobart22 0:f25302b74b6f 7
mescobart22 0:f25302b74b6f 8 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
mescobart22 0:f25302b74b6f 9 DigitalOut led(LED1);
mescobart22 0:f25302b74b6f 10 DigitalOut led2(LED2);
mescobart22 0:f25302b74b6f 11 DigitalOut led3(LED3);
mescobart22 0:f25302b74b6f 12
mescobart22 0:f25302b74b6f 13 int header =0; //tiempo de cabecera pulso abajo
mescobart22 0:f25302b74b6f 14 const int head_H = 9120; //+10% medida con osciloscopio en microsegundos
mescobart22 0:f25302b74b6f 15 const int head_L = 8939;//-10% medida con osciloscopio
mescobart22 0:f25302b74b6f 16 const int Tp=300;
mescobart22 0:f25302b74b6f 17 int i=0;
mescobart22 0:f25302b74b6f 18 const int T_alto=1570;//1630;//ponga su tiempo de la prueba
mescobart22 0:f25302b74b6f 19 const int T_bajo=467;//533;//ponga su tiempo de la prueba
mescobart22 0:f25302b74b6f 20 const int num_bits = 24;//ponga su numero de bits
mescobart22 0:f25302b74b6f 21 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
mescobart22 0:f25302b74b6f 22
mescobart22 0:f25302b74b6f 23 int Tecla=0;
mescobart22 0:f25302b74b6f 24 const int T1=96;
mescobart22 0:f25302b74b6f 25 const int T2=117;
mescobart22 0:f25302b74b6f 26 const int T3=109;
mescobart22 0:f25302b74b6f 27
mescobart22 0:f25302b74b6f 28 int dato; // tiempo de cada dato que se lee
mescobart22 0:f25302b74b6f 29
mescobart22 0:f25302b74b6f 30 int main()
mescobart22 0:f25302b74b6f 31 {
mescobart22 0:f25302b74b6f 32
mescobart22 0:f25302b74b6f 33 led=1;
mescobart22 0:f25302b74b6f 34 led2=1;
mescobart22 0:f25302b74b6f 35 led3=1;
mescobart22 0:f25302b74b6f 36 while(1)
mescobart22 0:f25302b74b6f 37 {
mescobart22 0:f25302b74b6f 38 lcd.cls();
mescobart22 0:f25302b74b6f 39 lcd.locate(0,0);
mescobart22 1:be954ee8585a 40 lcd.printf("PRESIONE UNA TECLA");
mescobart22 0:f25302b74b6f 41
mescobart22 0:f25302b74b6f 42 ini1: fflush( stdin );
mescobart22 0:f25302b74b6f 43 header=0;
mescobart22 0:f25302b74b6f 44 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header
mescobart22 0:f25302b74b6f 45 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
mescobart22 0:f25302b74b6f 46 else goto ini1;
mescobart22 0:f25302b74b6f 47
mescobart22 0:f25302b74b6f 48 seguir:
mescobart22 0:f25302b74b6f 49 //leo los datos de la trama y se meten a un arreglo
mescobart22 0:f25302b74b6f 50 wait_us(4500);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO
mescobart22 0:f25302b74b6f 51 //led2=0;
mescobart22 0:f25302b74b6f 52 lcd.cls();
mescobart22 0:f25302b74b6f 53 Tecla=0;
mescobart22 0:f25302b74b6f 54 for(i=0;i<(num_bits-1);++i)
mescobart22 0:f25302b74b6f 55 { // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
mescobart22 0:f25302b74b6f 56 dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
mescobart22 0:f25302b74b6f 57 num[i]=dato;
mescobart22 0:f25302b74b6f 58 wait_us(Tp);
mescobart22 0:f25302b74b6f 59 }
mescobart22 0:f25302b74b6f 60 wait(0.3); //se espera un tiempo luego de leer todo el arreglo y ponerlo en pantalla
mescobart22 0:f25302b74b6f 61
mescobart22 0:f25302b74b6f 62 for(i=0;i<(num_bits-1);++i)
mescobart22 0:f25302b74b6f 63 {
mescobart22 0:f25302b74b6f 64
mescobart22 0:f25302b74b6f 65 if(num[i] > ((T_alto+T_bajo)/2))
mescobart22 0:f25302b74b6f 66 {
mescobart22 0:f25302b74b6f 67 Tecla=Tecla+ (2^(i));
mescobart22 0:f25302b74b6f 68 }
mescobart22 0:f25302b74b6f 69 }
mescobart22 0:f25302b74b6f 70 if(Tecla==T1)
mescobart22 0:f25302b74b6f 71 { led=!led;
mescobart22 0:f25302b74b6f 72 lcd.cls();
mescobart22 0:f25302b74b6f 73 lcd.printf("PRESIONASTE 1");
mescobart22 0:f25302b74b6f 74 lcd.locate(0,1);
mescobart22 0:f25302b74b6f 75 lcd.printf("Codigo=%d",Tecla);
mescobart22 0:f25302b74b6f 76 wait(3);
mescobart22 0:f25302b74b6f 77 lcd.cls();
mescobart22 0:f25302b74b6f 78 lcd.locate(0,0);
mescobart22 1:be954ee8585a 79 lcd.printf("HH:%d",Head_H);
mescobart22 0:f25302b74b6f 80 lcd.locate(8,0);
mescobart22 0:f25302b74b6f 81 lcd.printf("Tby:%d",Tp);
mescobart22 0:f25302b74b6f 82 lcd.locate(0,1);
mescobart22 1:be954ee8585a 83 lcd.printf("HL:%d",Head_L);
mescobart22 0:f25302b74b6f 84 lcd.locate(8,1);
mescobart22 1:be954ee8585a 85 lcd.printf("Nby:%d",Num_bits);
mescobart22 0:f25302b74b6f 86 wait(3);
mescobart22 0:f25302b74b6f 87 Tecla=0;
mescobart22 0:f25302b74b6f 88 }
mescobart22 0:f25302b74b6f 89 if(Tecla==T2)
mescobart22 0:f25302b74b6f 90 {
mescobart22 0:f25302b74b6f 91 led2=!led2;
mescobart22 0:f25302b74b6f 92 lcd.cls();
mescobart22 0:f25302b74b6f 93 lcd.printf("PRESIONASTE 2");
mescobart22 0:f25302b74b6f 94 lcd.locate(0,1);
mescobart22 0:f25302b74b6f 95 lcd.printf("Codigo=%d",Tecla);
mescobart22 0:f25302b74b6f 96 wait(2);
mescobart22 0:f25302b74b6f 97 lcd.cls();
mescobart22 0:f25302b74b6f 98 lcd.locate(0,0);
mescobart22 1:be954ee8585a 99 lcd.printf("HH:%d",Head_H);
mescobart22 0:f25302b74b6f 100 lcd.locate(8,0);
mescobart22 0:f25302b74b6f 101 lcd.printf("Tby:%d",Tp);
mescobart22 0:f25302b74b6f 102 lcd.locate(0,1);
mescobart22 1:be954ee8585a 103 lcd.printf("HL:%d",Head_L);
mescobart22 0:f25302b74b6f 104 lcd.locate(8,1);
mescobart22 1:be954ee8585a 105 lcd.printf("Nby:%d",Num_bits);
mescobart22 0:f25302b74b6f 106 Tecla=0;
mescobart22 0:f25302b74b6f 107 wait(2);
mescobart22 0:f25302b74b6f 108 }
mescobart22 0:f25302b74b6f 109 if(Tecla==T3)
mescobart22 0:f25302b74b6f 110 {
mescobart22 0:f25302b74b6f 111
mescobart22 0:f25302b74b6f 112 led3=!led3;
mescobart22 0:f25302b74b6f 113 lcd.cls();
mescobart22 0:f25302b74b6f 114 lcd.printf("PRESIONASTE 3");
mescobart22 0:f25302b74b6f 115 lcd.locate(0,1);
mescobart22 0:f25302b74b6f 116 lcd.printf("Codigo=%d",Tecla);
mescobart22 0:f25302b74b6f 117 wait(2);
mescobart22 0:f25302b74b6f 118 lcd.cls();
mescobart22 0:f25302b74b6f 119 lcd.locate(0,0);
mescobart22 1:be954ee8585a 120 lcd.printf("HH:%d",Head_H);
mescobart22 0:f25302b74b6f 121 lcd.locate(8,0);
mescobart22 0:f25302b74b6f 122 lcd.printf("Tby:%d",Tp);
mescobart22 0:f25302b74b6f 123 lcd.locate(0,1);
mescobart22 1:be954ee8585a 124 lcd.printf("HL:%d",Head_L);
mescobart22 0:f25302b74b6f 125 lcd.locate(8,1);
mescobart22 1:be954ee8585a 126 lcd.printf("Nby:%d",Num_bits);
mescobart22 0:f25302b74b6f 127 Tecla=0;
mescobart22 0:f25302b74b6f 128 wait(2);
mescobart22 0:f25302b74b6f 129 }
mescobart22 0:f25302b74b6f 130 if ((Tecla!=T3)&&(Tecla!=T2)&&(Tecla!=T1)&&(Tecla!=0)){
mescobart22 0:f25302b74b6f 131 lcd.cls();
mescobart22 1:be954ee8585a 132 lcd.printf("TECLA FALSA");
mescobart22 0:f25302b74b6f 133 lcd.locate(0,1);
mescobart22 0:f25302b74b6f 134 lcd.printf("Codigo=%d",Tecla);
mescobart22 0:f25302b74b6f 135 wait(2);
mescobart22 0:f25302b74b6f 136 lcd.cls();
mescobart22 0:f25302b74b6f 137 lcd.locate(0,0);
mescobart22 1:be954ee8585a 138 lcd.printf("HH:%d",Head_H);
mescobart22 0:f25302b74b6f 139 lcd.locate(8,0);
mescobart22 0:f25302b74b6f 140 lcd.printf("Tby:%d",Tp);
mescobart22 0:f25302b74b6f 141 lcd.locate(0,1);
mescobart22 1:be954ee8585a 142 lcd.printf("HL:%d",Head_L);
mescobart22 0:f25302b74b6f 143 lcd.locate(8,1);
mescobart22 1:be954ee8585a 144 lcd.printf("Nby:%d",Num_bits);
mescobart22 0:f25302b74b6f 145 Tecla=0;
mescobart22 0:f25302b74b6f 146 wait(2);}
mescobart22 0:f25302b74b6f 147 }
mescobart22 0:f25302b74b6f 148 }