
This program read the values of a infrared signal taken from a TV remote and then this signal is entered in a PWM, which increasses and decreasses the dutty cycle with two buttons of the remote. Before we have characterizing the tv remote
Dependencies: Pulse1 TextLCD mbed
main.cpp@0:c7067fa0279b, 2013-12-15 (annotated)
- Committer:
- lcorralesc1
- Date:
- Sun Dec 15 15:53:26 2013 +0000
- Revision:
- 0:c7067fa0279b
This program read the values of a infrared signal taken from a TV remote and then this signal is entered in a PWM, which increasses and decreasses the dutty cycle with two buttons of the remote. Before we have characterizing the tv remote
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lcorralesc1 | 0:c7067fa0279b | 1 | #include "mbed.h" |
lcorralesc1 | 0:c7067fa0279b | 2 | #include <Pulse1.h> |
lcorralesc1 | 0:c7067fa0279b | 3 | #include "TextLCD.h" |
lcorralesc1 | 0:c7067fa0279b | 4 | |
lcorralesc1 | 0:c7067fa0279b | 5 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
lcorralesc1 | 0:c7067fa0279b | 6 | PulseInOut irda(PTD5);// puerto sensor infrarrojo |
lcorralesc1 | 0:c7067fa0279b | 7 | Serial pc(USBTX, USBRX); |
lcorralesc1 | 0:c7067fa0279b | 8 | PwmOut led(LED1); |
lcorralesc1 | 0:c7067fa0279b | 9 | PwmOut Salida(PTA4); |
lcorralesc1 | 0:c7067fa0279b | 10 | float perro=1; |
lcorralesc1 | 0:c7067fa0279b | 11 | |
lcorralesc1 | 0:c7067fa0279b | 12 | int header =0; //tiempo de cabecera pulso abajo |
lcorralesc1 | 0:c7067fa0279b | 13 | const int head_H = 11040; //+20% medida con osciloscopio en microsegundos |
lcorralesc1 | 0:c7067fa0279b | 14 | const int head_L = 7360;//-20% medida con osciloscopio |
lcorralesc1 | 0:c7067fa0279b | 15 | int i=0; |
lcorralesc1 | 0:c7067fa0279b | 16 | const int T_alto=1560;//ponga su tiempo de la prueba |
lcorralesc1 | 0:c7067fa0279b | 17 | const int T_bajo=480;//ponga su tiempo de la prueba |
lcorralesc1 | 0:c7067fa0279b | 18 | const int num_bits = 32;//ponga su numero de bits |
lcorralesc1 | 0:c7067fa0279b | 19 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
lcorralesc1 | 0:c7067fa0279b | 20 | int sec[num_bits];//cadena para almacenar la cadena codificada en binario |
lcorralesc1 | 0:c7067fa0279b | 21 | 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}; |
lcorralesc1 | 0:c7067fa0279b | 22 | 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}; |
lcorralesc1 | 0:c7067fa0279b | 23 | int flag1,flag2,flag3; //Banderas tiempo |
lcorralesc1 | 0:c7067fa0279b | 24 | int dato; // tiempo de cada dato que se lee |
lcorralesc1 | 0:c7067fa0279b | 25 | |
lcorralesc1 | 0:c7067fa0279b | 26 | int main() |
lcorralesc1 | 0:c7067fa0279b | 27 | { |
lcorralesc1 | 0:c7067fa0279b | 28 | led=1; |
lcorralesc1 | 0:c7067fa0279b | 29 | while(1) |
lcorralesc1 | 0:c7067fa0279b | 30 | { |
lcorralesc1 | 0:c7067fa0279b | 31 | ini1: |
lcorralesc1 | 0:c7067fa0279b | 32 | header=0; |
lcorralesc1 | 0:c7067fa0279b | 33 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo |
lcorralesc1 | 0:c7067fa0279b | 34 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
lcorralesc1 | 0:c7067fa0279b | 35 | else goto ini1; |
lcorralesc1 | 0:c7067fa0279b | 36 | |
lcorralesc1 | 0:c7067fa0279b | 37 | seguir: |
lcorralesc1 | 0:c7067fa0279b | 38 | //leo los datos de la trama y se meten a un arreglo |
lcorralesc1 | 0:c7067fa0279b | 39 | wait_us(2000); |
lcorralesc1 | 0:c7067fa0279b | 40 | for(i=0; i<(num_bits-1); ++i) // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
lcorralesc1 | 0:c7067fa0279b | 41 | { |
lcorralesc1 | 0:c7067fa0279b | 42 | dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control |
lcorralesc1 | 0:c7067fa0279b | 43 | num[i]=dato; |
lcorralesc1 | 0:c7067fa0279b | 44 | wait_us(332); |
lcorralesc1 | 0:c7067fa0279b | 45 | } |
lcorralesc1 | 0:c7067fa0279b | 46 | //wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla |
lcorralesc1 | 0:c7067fa0279b | 47 | pc.printf(",%d",header); |
lcorralesc1 | 0:c7067fa0279b | 48 | for(i=0; i<num_bits; ++i) |
lcorralesc1 | 0:c7067fa0279b | 49 | { |
lcorralesc1 | 0:c7067fa0279b | 50 | pc.printf(",%d",num[i]); |
lcorralesc1 | 0:c7067fa0279b | 51 | } |
lcorralesc1 | 0:c7067fa0279b | 52 | //wait(0.1); //espero e imprimo en binario |
lcorralesc1 | 0:c7067fa0279b | 53 | pc.printf("\n\n"); |
lcorralesc1 | 0:c7067fa0279b | 54 | for(i=0; i<num_bits; ++i) |
lcorralesc1 | 0:c7067fa0279b | 55 | { |
lcorralesc1 | 0:c7067fa0279b | 56 | if(num[i] > ((T_alto+T_bajo)/2)) |
lcorralesc1 | 0:c7067fa0279b | 57 | { |
lcorralesc1 | 0:c7067fa0279b | 58 | pc.printf("1"); |
lcorralesc1 | 0:c7067fa0279b | 59 | sec[i]=1; // guardo la secuancia en binario |
lcorralesc1 | 0:c7067fa0279b | 60 | } |
lcorralesc1 | 0:c7067fa0279b | 61 | else |
lcorralesc1 | 0:c7067fa0279b | 62 | { |
lcorralesc1 | 0:c7067fa0279b | 63 | sec[i]=0; //guardo la secuencia en binario |
lcorralesc1 | 0:c7067fa0279b | 64 | pc.printf("0"); |
lcorralesc1 | 0:c7067fa0279b | 65 | } |
lcorralesc1 | 0:c7067fa0279b | 66 | } |
lcorralesc1 | 0:c7067fa0279b | 67 | |
lcorralesc1 | 0:c7067fa0279b | 68 | flag1=1; |
lcorralesc1 | 0:c7067fa0279b | 69 | flag2=1; |
lcorralesc1 | 0:c7067fa0279b | 70 | flag3=1; |
lcorralesc1 | 0:c7067fa0279b | 71 | for(i=0; i<32; ++i) |
lcorralesc1 | 0:c7067fa0279b | 72 | { |
lcorralesc1 | 0:c7067fa0279b | 73 | if(sec[i]!=boton1[i]) //en caso de que un bit no coincida se descarta el boton 1 |
lcorralesc1 | 0:c7067fa0279b | 74 | { |
lcorralesc1 | 0:c7067fa0279b | 75 | flag1=0; |
lcorralesc1 | 0:c7067fa0279b | 76 | } |
lcorralesc1 | 0:c7067fa0279b | 77 | if(sec[i]!=boton2[i]) //en caso de que un bit no coincida se descarta el boton 2 |
lcorralesc1 | 0:c7067fa0279b | 78 | { |
lcorralesc1 | 0:c7067fa0279b | 79 | flag2=0; |
lcorralesc1 | 0:c7067fa0279b | 80 | } |
lcorralesc1 | 0:c7067fa0279b | 81 | } |
lcorralesc1 | 0:c7067fa0279b | 82 | if(flag1==1) |
lcorralesc1 | 0:c7067fa0279b | 83 | { |
lcorralesc1 | 0:c7067fa0279b | 84 | if(perro<1){ |
lcorralesc1 | 0:c7067fa0279b | 85 | perro=perro+0.1; |
lcorralesc1 | 0:c7067fa0279b | 86 | Salida=perro; |
lcorralesc1 | 0:c7067fa0279b | 87 | led=perro; |
lcorralesc1 | 0:c7067fa0279b | 88 | lcd.cls(); // Borrar Pantalla |
lcorralesc1 | 0:c7067fa0279b | 89 | lcd.locate(0,0); |
lcorralesc1 | 0:c7067fa0279b | 90 | lcd.printf("perro=%g",perro); }//si coincidieron todos los bits del boton 1 |
lcorralesc1 | 0:c7067fa0279b | 91 | |
lcorralesc1 | 0:c7067fa0279b | 92 | } |
lcorralesc1 | 0:c7067fa0279b | 93 | else if(flag2==1) |
lcorralesc1 | 0:c7067fa0279b | 94 | { |
lcorralesc1 | 0:c7067fa0279b | 95 | if(perro>0.1){ |
lcorralesc1 | 0:c7067fa0279b | 96 | perro=perro-0.1; |
lcorralesc1 | 0:c7067fa0279b | 97 | Salida=perro; |
lcorralesc1 | 0:c7067fa0279b | 98 | led=perro; |
lcorralesc1 | 0:c7067fa0279b | 99 | lcd.cls(); // Borrar Pantalla |
lcorralesc1 | 0:c7067fa0279b | 100 | lcd.locate(0,0); |
lcorralesc1 | 0:c7067fa0279b | 101 | lcd.printf("perro=%g",perro); }//si coincidieron todos los bits del boton 2 |
lcorralesc1 | 0:c7067fa0279b | 102 | } |
lcorralesc1 | 0:c7067fa0279b | 103 | |
lcorralesc1 | 0:c7067fa0279b | 104 | } |
lcorralesc1 | 0:c7067fa0279b | 105 | } |