Tarea 2-Procesadores 2016-2. Aldair Navarro
Dependencies: Pulse1 TextLCD mbed
Fork of irda_Sony by
main.cpp@4:150bc6a5f5b4, 2016-04-26 (annotated)
- Committer:
- tony63
- Date:
- Tue Apr 26 04:23:42 2016 +0000
- Revision:
- 4:150bc6a5f5b4
- Parent:
- 3:82bebaf2a06a
- Child:
- 5:6d9292b2d5e3
/control remoto sony disparo camara; //puede convertir la trama en un entero y facilitar la comparacion; //para cualquier tecla
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tony63 | 0:74d57f8ae247 | 1 | #include "mbed.h" |
tony63 | 0:74d57f8ae247 | 2 | #include <Pulse1.h> |
tony63 | 4:150bc6a5f5b4 | 3 | #include "stdio.h" |
tony63 | 4:150bc6a5f5b4 | 4 | #include "math.h" |
tony63 | 4:150bc6a5f5b4 | 5 | //control remoto sony disparo camara |
tony63 | 4:150bc6a5f5b4 | 6 | //puede convertir la trama en un entero |
tony63 | 4:150bc6a5f5b4 | 7 | //para cualquier tecla |
tony63 | 2:6a15ab0305c8 | 8 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
tony63 | 0:74d57f8ae247 | 9 | Serial pc(USBTX, USBRX); |
tony63 | 0:74d57f8ae247 | 10 | DigitalOut led(LED1); |
tony63 | 2:6a15ab0305c8 | 11 | DigitalOut led2(LED2); |
tony63 | 2:6a15ab0305c8 | 12 | int header =0; //tiempo de cabecera pulso abajo |
tony63 | 4:150bc6a5f5b4 | 13 | const int head_H = 2976; //+10% medida con osciloscopio en microsegundos |
tony63 | 4:150bc6a5f5b4 | 14 | const int head_L = 1984;//-10% medida con osciloscopio |
tony63 | 4:150bc6a5f5b4 | 15 | int i=0, bin, potencia; |
tony63 | 4:150bc6a5f5b4 | 16 | const int T_alto=1200;//ponga su tiempo de la prueba |
tony63 | 4:150bc6a5f5b4 | 17 | const int T_bajo=639;//ponga su tiempo de la prueba |
tony63 | 4:150bc6a5f5b4 | 18 | const int num_bits = 20;//ponga su numero de bits |
tony63 | 2:6a15ab0305c8 | 19 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 2:6a15ab0305c8 | 20 | int dato; // tiempo de cada dato que se lee |
tony63 | 4:150bc6a5f5b4 | 21 | int numero; |
tony63 | 4:150bc6a5f5b4 | 22 | int binM[20]; |
tony63 | 4:150bc6a5f5b4 | 23 | int bin_max[20]; |
tony63 | 4:150bc6a5f5b4 | 24 | |
tony63 | 4:150bc6a5f5b4 | 25 | |
tony63 | 4:150bc6a5f5b4 | 26 | |
tony63 | 0:74d57f8ae247 | 27 | int main(){ |
tony63 | 0:74d57f8ae247 | 28 | while(1){ |
tony63 | 3:82bebaf2a06a | 29 | ini1: fflush( stdin ); |
tony63 | 3:82bebaf2a06a | 30 | header=0; |
tony63 | 2:6a15ab0305c8 | 31 | led2=1; |
tony63 | 0:74d57f8ae247 | 32 | led=1; |
tony63 | 3:82bebaf2a06a | 33 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header |
tony63 | 2:6a15ab0305c8 | 34 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
tony63 | 2:6a15ab0305c8 | 35 | else goto ini1; |
tony63 | 0:74d57f8ae247 | 36 | |
tony63 | 2:6a15ab0305c8 | 37 | seguir: |
tony63 | 2:6a15ab0305c8 | 38 | //leo los datos de la trama y se meten a un arreglo |
tony63 | 4:150bc6a5f5b4 | 39 | wait_us(400);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO |
tony63 | 4:150bc6a5f5b4 | 40 | led2=1; |
tony63 | 2:6a15ab0305c8 | 41 | for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
tony63 | 4:150bc6a5f5b4 | 42 | dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control |
tony63 | 2:6a15ab0305c8 | 43 | num[i]=dato; |
tony63 | 4:150bc6a5f5b4 | 44 | wait_us(400); |
tony63 | 2:6a15ab0305c8 | 45 | } |
tony63 | 3:82bebaf2a06a | 46 | wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla |
tony63 | 4:150bc6a5f5b4 | 47 | //pc.printf(",%d",header); |
tony63 | 2:6a15ab0305c8 | 48 | for(i=0;i<(num_bits-1);++i){ |
tony63 | 4:150bc6a5f5b4 | 49 | //pc.printf(",%d",num[i]); |
tony63 | 2:6a15ab0305c8 | 50 | } |
tony63 | 2:6a15ab0305c8 | 51 | wait(0.1); //espero e imprimo en binario |
tony63 | 4:150bc6a5f5b4 | 52 | //pc.printf("\n\n"); |
tony63 | 2:6a15ab0305c8 | 53 | for(i=0;i<(num_bits-1);++i){ |
tony63 | 4:150bc6a5f5b4 | 54 | if(num[i] > ((T_alto+T_bajo)/2)){ |
tony63 | 4:150bc6a5f5b4 | 55 | bin_max[i]=1; |
tony63 | 4:150bc6a5f5b4 | 56 | } |
tony63 | 4:150bc6a5f5b4 | 57 | else{ |
tony63 | 4:150bc6a5f5b4 | 58 | bin_max[i]=0; |
tony63 | 4:150bc6a5f5b4 | 59 | } |
tony63 | 4:150bc6a5f5b4 | 60 | |
tony63 | 4:150bc6a5f5b4 | 61 | } |
tony63 | 4:150bc6a5f5b4 | 62 | binM[0]=1; |
tony63 | 4:150bc6a5f5b4 | 63 | for(i=1;i<(num_bits-1);++i){ |
tony63 | 4:150bc6a5f5b4 | 64 | binM[i]=binM[i-1]*2; |
tony63 | 4:150bc6a5f5b4 | 65 | |
tony63 | 4:150bc6a5f5b4 | 66 | } |
tony63 | 4:150bc6a5f5b4 | 67 | numero=0; |
tony63 | 4:150bc6a5f5b4 | 68 | for(i=0;i<(num_bits-1);++i){ |
tony63 | 4:150bc6a5f5b4 | 69 | |
tony63 | 4:150bc6a5f5b4 | 70 | numero=numero+(binM[i]*bin_max[i]); |
tony63 | 4:150bc6a5f5b4 | 71 | |
tony63 | 2:6a15ab0305c8 | 72 | } |
tony63 | 4:150bc6a5f5b4 | 73 | pc.printf("numero=%d",numero); |
tony63 | 4:150bc6a5f5b4 | 74 | if (numero==466221){ |
tony63 | 4:150bc6a5f5b4 | 75 | led2=0; |
tony63 | 4:150bc6a5f5b4 | 76 | wait(4); |
tony63 | 4:150bc6a5f5b4 | 77 | led2=1; |
tony63 | 4:150bc6a5f5b4 | 78 | goto ini1; |
tony63 | 4:150bc6a5f5b4 | 79 | } |
tony63 | 4:150bc6a5f5b4 | 80 | if (numero==466231){ |
tony63 | 4:150bc6a5f5b4 | 81 | led=0; |
tony63 | 4:150bc6a5f5b4 | 82 | wait(4); |
tony63 | 4:150bc6a5f5b4 | 83 | led=1; |
tony63 | 4:150bc6a5f5b4 | 84 | goto ini1; |
tony63 | 4:150bc6a5f5b4 | 85 | } |
tony63 | 2:6a15ab0305c8 | 86 | } |
tony63 | 2:6a15ab0305c8 | 87 | } |