Programa para encedido de 3 Leds por medio de un control Sony oprimiendo las teclas 1,2 y 3

Dependencies:   Pulse1 mbed

Committer:
leorestrepo93
Date:
Thu Dec 12 13:46:28 2013 +0000
Revision:
1:e86784430f01
Parent:
main.cpp@0:ede132a1e72c
Infrarrojo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leorestrepo93 0:ede132a1e72c 1 #include "mbed.h"
leorestrepo93 0:ede132a1e72c 2 #include <Pulse1.h>
leorestrepo93 0:ede132a1e72c 3
leorestrepo93 0:ede132a1e72c 4 PulseInOut irda(PTD5);
leorestrepo93 0:ede132a1e72c 5 Serial pc(USBTX, USBRX);
leorestrepo93 0:ede132a1e72c 6 DigitalOut l0(LED1);
leorestrepo93 0:ede132a1e72c 7 DigitalOut l1(LED2);
leorestrepo93 0:ede132a1e72c 8 DigitalOut l2(LED3);
leorestrepo93 0:ede132a1e72c 9
leorestrepo93 0:ede132a1e72c 10 int header =0;
leorestrepo93 0:ede132a1e72c 11 const int head_H = 2964; //+20% medida con osciloscopio en microsegundos
leorestrepo93 0:ede132a1e72c 12 const int head_L = 1976;//-20% medida con osciloscopio
leorestrepo93 0:ede132a1e72c 13 int i=0;
leorestrepo93 0:ede132a1e72c 14 const int T_alto=1200;//ponga su tiempo de la prueba
leorestrepo93 0:ede132a1e72c 15 const int T_bajo=600;//ponga su tiempo de la prueba
leorestrepo93 0:ede132a1e72c 16 const int num_bits = 21;//ponga su numero de bits
leorestrepo93 0:ede132a1e72c 17 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
leorestrepo93 0:ede132a1e72c 18 int dato; // tiempo de cada dato que se lee
leorestrepo93 0:ede132a1e72c 19 int n1[20],n2[20],n3[20];
leorestrepo93 0:ede132a1e72c 20
leorestrepo93 0:ede132a1e72c 21 int main(){
leorestrepo93 0:ede132a1e72c 22 n1[0]=n1[1]=n1[2]=n1[3]=n1[4]=n1[5]=n1[6]=n1[7]=n1[9]=n1[13]=n1[14]=n1[16]=n1[17]=n1[19]=0;
leorestrepo93 0:ede132a1e72c 23 n1[8]=n1[10]=n1[11]=n1[12]=n1[15]=n1[18]=1;
leorestrepo93 0:ede132a1e72c 24 n2[1]=n2[3]=n2[4]=n2[5]=n2[6]=n2[7]=n2[1]=n2[9]=n2[13]=n2[14]=n2[16]=n2[17]=n2[19]=0;
leorestrepo93 0:ede132a1e72c 25 n2[8]=n2[10]=n2[11]=n2[12]=n2[15]=n2[18]=n2[0]=1;
leorestrepo93 0:ede132a1e72c 26 n3[0]=n3[2]=n3[3]=n3[4]=n3[5]=n3[6]=n3[7]=n3[9]=n3[13]=n3[14]=n3[16]=n3[17]=n3[19]=0;
leorestrepo93 0:ede132a1e72c 27 n3[8]=n3[10]=n3[11]=n3[12]=n3[15]=n3[18]=n3[1]=1;
leorestrepo93 0:ede132a1e72c 28 int w,e,r;
leorestrepo93 0:ede132a1e72c 29 w=e=r=0;
leorestrepo93 0:ede132a1e72c 30 l0=l1=l2=1;
leorestrepo93 0:ede132a1e72c 31 while(1){
leorestrepo93 0:ede132a1e72c 32 ini1: header=0;
leorestrepo93 0:ede132a1e72c 33 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo
leorestrepo93 0:ede132a1e72c 34 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
leorestrepo93 0:ede132a1e72c 35 else goto ini1;
leorestrepo93 0:ede132a1e72c 36
leorestrepo93 0:ede132a1e72c 37 seguir:
leorestrepo93 0:ede132a1e72c 38 wait_us(300);
leorestrepo93 0:ede132a1e72c 39
leorestrepo93 0:ede132a1e72c 40 for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
leorestrepo93 0:ede132a1e72c 41 dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control
leorestrepo93 0:ede132a1e72c 42 num[i]=dato;
leorestrepo93 0:ede132a1e72c 43 wait_us(300);
leorestrepo93 0:ede132a1e72c 44 }
leorestrepo93 0:ede132a1e72c 45
leorestrepo93 0:ede132a1e72c 46 wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla
leorestrepo93 0:ede132a1e72c 47
leorestrepo93 0:ede132a1e72c 48 for(i=0;i<(num_bits-1);++i){
leorestrepo93 0:ede132a1e72c 49 if(num[i] > ((T_alto+T_bajo)/2)) num[i]=1;
leorestrepo93 0:ede132a1e72c 50 else num[i]=0;
leorestrepo93 0:ede132a1e72c 51 }
leorestrepo93 0:ede132a1e72c 52 for(i=0;i<(num_bits-1);++i){
leorestrepo93 0:ede132a1e72c 53 if(num[i]==n1[i])w++;
leorestrepo93 0:ede132a1e72c 54 }
leorestrepo93 0:ede132a1e72c 55
leorestrepo93 0:ede132a1e72c 56 if(w==20){
leorestrepo93 0:ede132a1e72c 57 l0=!l0;
leorestrepo93 0:ede132a1e72c 58 }
leorestrepo93 0:ede132a1e72c 59 for(i=0;i<(num_bits-1);++i){
leorestrepo93 0:ede132a1e72c 60 if(num[i]==n2[i])e++;
leorestrepo93 0:ede132a1e72c 61 }
leorestrepo93 0:ede132a1e72c 62
leorestrepo93 0:ede132a1e72c 63 if(e==20){
leorestrepo93 0:ede132a1e72c 64 l1=!l1;
leorestrepo93 0:ede132a1e72c 65 }
leorestrepo93 0:ede132a1e72c 66 for(i=0;i<(num_bits-1);++i){
leorestrepo93 0:ede132a1e72c 67 if(num[i]==n3[i])r++;
leorestrepo93 0:ede132a1e72c 68 }
leorestrepo93 0:ede132a1e72c 69
leorestrepo93 0:ede132a1e72c 70 if(r==20){
leorestrepo93 0:ede132a1e72c 71 l2=!l2;
leorestrepo93 0:ede132a1e72c 72 }
leorestrepo93 0:ede132a1e72c 73 w=e=r=0;
leorestrepo93 0:ede132a1e72c 74 }
leorestrepo93 0:ede132a1e72c 75 }