Alejandro Marin
/
Tarea5irda1
sensor irda + control remoto
Fork of irda1 by
main.cpp
- Committer:
- amarincan
- Date:
- 2013-12-04
- Revision:
- 3:56114a39ba7a
- Parent:
- 2:6a15ab0305c8
File content as of revision 3:56114a39ba7a:
#include "mbed.h" #include "Pulse1.h" PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo Serial pc(USBTX, USBRX); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); int header =0; //tiempo de cabecera pulso abajo const int head_H = 11100; //+20% medida con osciloscopio en microsegundos const int head_L = 6400;//-20% medida con osciloscopio int i=0,m,mb,mr; //const int T_alto=1670;//ponga su tiempo de la prueba //const int T_bajo=533;//ponga su tiempo de la prueba const int num_bits = 32;//ponga su numero de bits int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos int dato; // tiempo de cada dato que se lee int cadena[num_bits]; int cadenar[num_bits]={1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,1}; int cadenab[num_bits]={1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1}; int cadenag[num_bits]={1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1}; int main(){ led1=1; led2=1; led3=1; while(1){ ini1: header=0; //led2=1; //led=1; header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% else goto ini1; seguir: //leo los datos de la trama y se meten a un arreglo // //wait_us(5000); //led2=0; for(i=0;i<(num_bits);i++){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control num[i]=dato; } //pc.printf("numero[0] %d",num[0]); for(i=0;i<(num_bits);i++){ //if(num[i] > ((T_alto+T_bajo)/2)) { if(num[i] > (1000)) { cadena[i]=1; pc.printf("1"); wait_us(100); } else { cadena[i]=0; pc.printf("0"); wait_us(100); } } // Compara dos cadenas for(i=0;i<(num_bits);i++){ if(cadena[i]!=cadenar[i]) m=100; } if(m==32) { pc.printf("rojo"); led3=!led3; } m=32; for(i=0;i<(num_bits);++i){ if(cadena[i]!=cadenag[i]) mr=100; } if(mr==32) { pc.printf("verde"); led2=!led2; } mr=32; for(i=0;i<(num_bits);++i){ if(cadena[i]!=cadenab[i]) mb=100; } if(mb==32) { pc.printf("azul"); led1=!led1; } mb=32; } }