Laura Agudelo
/
irda
preder led con un sessor infrarojo
main.cpp@0:8a5696da267b, 2013-11-20 (annotated)
- Committer:
- laura608
- Date:
- Wed Nov 20 14:44:32 2013 +0000
- Revision:
- 0:8a5696da267b
irda;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
laura608 | 0:8a5696da267b | 1 | #include "mbed.h" |
laura608 | 0:8a5696da267b | 2 | #include <Pulse1.h> |
laura608 | 0:8a5696da267b | 3 | |
laura608 | 0:8a5696da267b | 4 | PulseInOut irda(PTD5); |
laura608 | 0:8a5696da267b | 5 | Serial pc(USBTX, USBRX); |
laura608 | 0:8a5696da267b | 6 | DigitalOut l0(LED1); |
laura608 | 0:8a5696da267b | 7 | DigitalOut l1(LED2); |
laura608 | 0:8a5696da267b | 8 | DigitalOut l2(LED3); |
laura608 | 0:8a5696da267b | 9 | |
laura608 | 0:8a5696da267b | 10 | int header =0; |
laura608 | 0:8a5696da267b | 11 | const int head_H = 2964; //+20% medida con osciloscopio en microsegundos |
laura608 | 0:8a5696da267b | 12 | const int head_L = 1976;//-20% medida con osciloscopio |
laura608 | 0:8a5696da267b | 13 | int i=0; |
laura608 | 0:8a5696da267b | 14 | const int T_alto=1200;//ponga su tiempo de la prueba |
laura608 | 0:8a5696da267b | 15 | const int T_bajo=600;//ponga su tiempo de la prueba |
laura608 | 0:8a5696da267b | 16 | const int num_bits = 21;//ponga su numero de bits |
laura608 | 0:8a5696da267b | 17 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
laura608 | 0:8a5696da267b | 18 | int dato; // tiempo de cada dato que se lee |
laura608 | 0:8a5696da267b | 19 | |
laura608 | 0:8a5696da267b | 20 | int main(){ |
laura608 | 0:8a5696da267b | 21 | l0=l1=l2=1; |
laura608 | 0:8a5696da267b | 22 | while(1){ |
laura608 | 0:8a5696da267b | 23 | ini1: header=0; |
laura608 | 0:8a5696da267b | 24 | l1=l0=l2=1; |
laura608 | 0:8a5696da267b | 25 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo |
laura608 | 0:8a5696da267b | 26 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
laura608 | 0:8a5696da267b | 27 | else goto ini1; |
laura608 | 0:8a5696da267b | 28 | |
laura608 | 0:8a5696da267b | 29 | seguir: |
laura608 | 0:8a5696da267b | 30 | wait_us(300); |
laura608 | 0:8a5696da267b | 31 | l0=0; |
laura608 | 0:8a5696da267b | 32 | l1=0; |
laura608 | 0:8a5696da267b | 33 | l2=0; |
laura608 | 0:8a5696da267b | 34 | |
laura608 | 0:8a5696da267b | 35 | for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
laura608 | 0:8a5696da267b | 36 | dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control |
laura608 | 0:8a5696da267b | 37 | num[i]=dato; |
laura608 | 0:8a5696da267b | 38 | wait_us(300); |
laura608 | 0:8a5696da267b | 39 | } |
laura608 | 0:8a5696da267b | 40 | |
laura608 | 0:8a5696da267b | 41 | wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla |
laura608 | 0:8a5696da267b | 42 | pc.printf(",%d",header); |
laura608 | 0:8a5696da267b | 43 | |
laura608 | 0:8a5696da267b | 44 | for(i=0;i<(num_bits-1);++i){ |
laura608 | 0:8a5696da267b | 45 | pc.printf(",%d",num[i]); |
laura608 | 0:8a5696da267b | 46 | } |
laura608 | 0:8a5696da267b | 47 | |
laura608 | 0:8a5696da267b | 48 | wait(0.1); //espero e imprimo en binario |
laura608 | 0:8a5696da267b | 49 | pc.printf("\n\n"); |
laura608 | 0:8a5696da267b | 50 | for(i=0;i<(num_bits-1);++i){ |
laura608 | 0:8a5696da267b | 51 | if(num[i] > ((T_alto+T_bajo)/2)) pc.printf("1"); |
laura608 | 0:8a5696da267b | 52 | else pc.printf("0"); |
laura608 | 0:8a5696da267b | 53 | } |
laura608 | 0:8a5696da267b | 54 | } |
laura608 | 0:8a5696da267b | 55 | } |