Tarea5 IRDA Grupo8
Dependencies: Pulse1 TextLCD-modificad mbed
main.cpp@0:ed00d6af5f8d, 2015-04-29 (annotated)
- Committer:
- obifandres
- Date:
- Wed Apr 29 05:08:19 2015 +0000
- Revision:
- 0:ed00d6af5f8d
Tarea5 Irda
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
obifandres | 0:ed00d6af5f8d | 1 | #include "mbed.h" |
obifandres | 0:ed00d6af5f8d | 2 | #include <Pulse1.h> |
obifandres | 0:ed00d6af5f8d | 3 | #include "TextLCD.h" |
obifandres | 0:ed00d6af5f8d | 4 | |
obifandres | 0:ed00d6af5f8d | 5 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); //configura los puestos PTE0,PTE1,PTE2,PTE3,PTE4,PTE5, donde se conectara el LCD 16x2 |
obifandres | 0:ed00d6af5f8d | 6 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
obifandres | 0:ed00d6af5f8d | 7 | Serial pc(USBTX, USBRX); |
obifandres | 0:ed00d6af5f8d | 8 | DigitalOut led2_G(LED2); |
obifandres | 0:ed00d6af5f8d | 9 | DigitalOut led2_R(LED3); |
obifandres | 0:ed00d6af5f8d | 10 | DigitalOut led2_B(LED1); |
obifandres | 0:ed00d6af5f8d | 11 | int header =0; //tiempo de cabecera pulso abajo |
obifandres | 0:ed00d6af5f8d | 12 | const int head_H = 2430*1.2; //+20% medida con osciloscopio en microsegundos |
obifandres | 0:ed00d6af5f8d | 13 | const int head_L = 2430*0.8;//-20% medida con osciloscopio |
obifandres | 0:ed00d6af5f8d | 14 | int i=0; |
obifandres | 0:ed00d6af5f8d | 15 | int n=0; |
obifandres | 0:ed00d6af5f8d | 16 | const int T_alto=1170;//ponga su tiempo de la prueba |
obifandres | 0:ed00d6af5f8d | 17 | const int T_bajo=567;//ponga su tiempo de la prueba |
obifandres | 0:ed00d6af5f8d | 18 | const int num_bits = 12;//ponga su numero de bits |
obifandres | 0:ed00d6af5f8d | 19 | int arreglo[num_bits]; |
obifandres | 0:ed00d6af5f8d | 20 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
obifandres | 0:ed00d6af5f8d | 21 | int dato; // tiempo de cada dato que se lee |
obifandres | 0:ed00d6af5f8d | 22 | |
obifandres | 0:ed00d6af5f8d | 23 | |
obifandres | 0:ed00d6af5f8d | 24 | int main(){ |
obifandres | 0:ed00d6af5f8d | 25 | lcd.cls(); |
obifandres | 0:ed00d6af5f8d | 26 | while(1){ |
obifandres | 0:ed00d6af5f8d | 27 | ini1: header=0; |
obifandres | 0:ed00d6af5f8d | 28 | |
obifandres | 0:ed00d6af5f8d | 29 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo |
obifandres | 0:ed00d6af5f8d | 30 | |
obifandres | 0:ed00d6af5f8d | 31 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
obifandres | 0:ed00d6af5f8d | 32 | else goto ini1; |
obifandres | 0:ed00d6af5f8d | 33 | |
obifandres | 0:ed00d6af5f8d | 34 | seguir: |
obifandres | 0:ed00d6af5f8d | 35 | //leo los datos de la trama y se meten a un arreglo |
obifandres | 0:ed00d6af5f8d | 36 | lcd.locate(0,1); |
obifandres | 0:ed00d6af5f8d | 37 | lcd.printf(" "); |
obifandres | 0:ed00d6af5f8d | 38 | lcd.locate(0,1); |
obifandres | 0:ed00d6af5f8d | 39 | wait_us(1650/2); |
obifandres | 0:ed00d6af5f8d | 40 | for(i=0;i<(num_bits);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
obifandres | 0:ed00d6af5f8d | 41 | dato = irda.read_low_us(); //leer un bit de datos que es pulso abajo en este control |
obifandres | 0:ed00d6af5f8d | 42 | num[i]=dato; |
obifandres | 0:ed00d6af5f8d | 43 | wait_us(550/2); |
obifandres | 0:ed00d6af5f8d | 44 | } |
obifandres | 0:ed00d6af5f8d | 45 | wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla |
obifandres | 0:ed00d6af5f8d | 46 | for(i=0;i<(num_bits);++i){ |
obifandres | 0:ed00d6af5f8d | 47 | if(num[i] > ((T_alto+T_bajo)/2)){ |
obifandres | 0:ed00d6af5f8d | 48 | arreglo[i]=1; |
obifandres | 0:ed00d6af5f8d | 49 | lcd.printf("%d",arreglo[i]); |
obifandres | 0:ed00d6af5f8d | 50 | } |
obifandres | 0:ed00d6af5f8d | 51 | else{ |
obifandres | 0:ed00d6af5f8d | 52 | arreglo[i]=0; |
obifandres | 0:ed00d6af5f8d | 53 | lcd.printf("%d",arreglo[i]); |
obifandres | 0:ed00d6af5f8d | 54 | } |
obifandres | 0:ed00d6af5f8d | 55 | } |
obifandres | 0:ed00d6af5f8d | 56 | lcd.locate(0,0); |
obifandres | 0:ed00d6af5f8d | 57 | lcd.printf("h=%dus",header); |
obifandres | 0:ed00d6af5f8d | 58 | lcd.locate(8,0); |
obifandres | 0:ed00d6af5f8d | 59 | lcd.printf(" "); |
obifandres | 0:ed00d6af5f8d | 60 | lcd.locate(8,0); |
obifandres | 0:ed00d6af5f8d | 61 | lcd.printf("T=%dus",dato); |
obifandres | 0:ed00d6af5f8d | 62 | } |
obifandres | 0:ed00d6af5f8d | 63 | } |