Tarea5 IRDA Grupo8

Dependencies:   Pulse1 TextLCD-modificad mbed

Committer:
obifandres
Date:
Wed Apr 29 05:08:19 2015 +0000
Revision:
0:ed00d6af5f8d
Tarea5 Irda

Who changed what in which revision?

UserRevisionLine numberNew 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 }