Encendido y apagado de luz led haciendo uso de un control remoto
Dependencies: Pulse1 TextLCD mbed
Fork of Tarea_6_control_remoto by
main.cpp@1:be954ee8585a, 2014-06-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |