sensor irda + control remoto

Dependencies:   Pulse1 mbed

Fork of irda1 by Gustavo Ramirez

/media/uploads/amarincan/irda-control.jpg

Committer:
amarincan
Date:
Wed Dec 04 03:25:22 2013 +0000
Revision:
3:56114a39ba7a
Parent:
2:6a15ab0305c8
sensor irda y control remoto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:74d57f8ae247 1 #include "mbed.h"
amarincan 3:56114a39ba7a 2 #include "Pulse1.h"
amarincan 3:56114a39ba7a 3
tony63 0:74d57f8ae247 4
tony63 2:6a15ab0305c8 5 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
tony63 0:74d57f8ae247 6 Serial pc(USBTX, USBRX);
amarincan 3:56114a39ba7a 7 DigitalOut led1(LED1);
tony63 2:6a15ab0305c8 8 DigitalOut led2(LED2);
amarincan 3:56114a39ba7a 9 DigitalOut led3(LED3);
tony63 2:6a15ab0305c8 10 int header =0; //tiempo de cabecera pulso abajo
amarincan 3:56114a39ba7a 11 const int head_H = 11100; //+20% medida con osciloscopio en microsegundos
amarincan 3:56114a39ba7a 12 const int head_L = 6400;//-20% medida con osciloscopio
amarincan 3:56114a39ba7a 13 int i=0,m,mb,mr;
amarincan 3:56114a39ba7a 14 //const int T_alto=1670;//ponga su tiempo de la prueba
amarincan 3:56114a39ba7a 15 //const int T_bajo=533;//ponga su tiempo de la prueba
tony63 2:6a15ab0305c8 16 const int num_bits = 32;//ponga su numero de bits
tony63 2:6a15ab0305c8 17 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 2:6a15ab0305c8 18 int dato; // tiempo de cada dato que se lee
amarincan 3:56114a39ba7a 19 int cadena[num_bits];
amarincan 3:56114a39ba7a 20
amarincan 3:56114a39ba7a 21 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};
amarincan 3:56114a39ba7a 22
amarincan 3:56114a39ba7a 23 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};
amarincan 3:56114a39ba7a 24
amarincan 3:56114a39ba7a 25 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};
amarincan 3:56114a39ba7a 26
tony63 0:74d57f8ae247 27 int main(){
amarincan 3:56114a39ba7a 28 led1=1;
amarincan 3:56114a39ba7a 29 led2=1;
amarincan 3:56114a39ba7a 30 led3=1;
tony63 0:74d57f8ae247 31 while(1){
tony63 2:6a15ab0305c8 32 ini1: header=0;
amarincan 3:56114a39ba7a 33 //led2=1;
amarincan 3:56114a39ba7a 34 //led=1;
tony63 2:6a15ab0305c8 35 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo
tony63 2:6a15ab0305c8 36 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
tony63 2:6a15ab0305c8 37 else goto ini1;
tony63 0:74d57f8ae247 38
tony63 2:6a15ab0305c8 39 seguir:
tony63 2:6a15ab0305c8 40 //leo los datos de la trama y se meten a un arreglo
amarincan 3:56114a39ba7a 41 //
amarincan 3:56114a39ba7a 42 //wait_us(5000);
amarincan 3:56114a39ba7a 43 //led2=0;
amarincan 3:56114a39ba7a 44 for(i=0;i<(num_bits);i++){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
tony63 2:6a15ab0305c8 45 dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
amarincan 3:56114a39ba7a 46 num[i]=dato;
amarincan 3:56114a39ba7a 47 }
amarincan 3:56114a39ba7a 48 //pc.printf("numero[0] %d",num[0]);
amarincan 3:56114a39ba7a 49 for(i=0;i<(num_bits);i++){
amarincan 3:56114a39ba7a 50 //if(num[i] > ((T_alto+T_bajo)/2)) {
amarincan 3:56114a39ba7a 51 if(num[i] > (1000)) {
amarincan 3:56114a39ba7a 52 cadena[i]=1;
amarincan 3:56114a39ba7a 53 pc.printf("1");
amarincan 3:56114a39ba7a 54 wait_us(100);
amarincan 3:56114a39ba7a 55 }
amarincan 3:56114a39ba7a 56 else
amarincan 3:56114a39ba7a 57 {
amarincan 3:56114a39ba7a 58 cadena[i]=0;
amarincan 3:56114a39ba7a 59 pc.printf("0");
amarincan 3:56114a39ba7a 60 wait_us(100);
tony63 2:6a15ab0305c8 61 }
amarincan 3:56114a39ba7a 62
amarincan 3:56114a39ba7a 63 }
amarincan 3:56114a39ba7a 64 // Compara dos cadenas
amarincan 3:56114a39ba7a 65 for(i=0;i<(num_bits);i++){
amarincan 3:56114a39ba7a 66 if(cadena[i]!=cadenar[i])
amarincan 3:56114a39ba7a 67 m=100;
amarincan 3:56114a39ba7a 68 }
amarincan 3:56114a39ba7a 69 if(m==32) {
amarincan 3:56114a39ba7a 70 pc.printf("rojo");
amarincan 3:56114a39ba7a 71 led3=!led3;
tony63 2:6a15ab0305c8 72 }
amarincan 3:56114a39ba7a 73 m=32;
amarincan 3:56114a39ba7a 74
amarincan 3:56114a39ba7a 75 for(i=0;i<(num_bits);++i){
amarincan 3:56114a39ba7a 76 if(cadena[i]!=cadenag[i])
amarincan 3:56114a39ba7a 77 mr=100;
amarincan 3:56114a39ba7a 78 }
amarincan 3:56114a39ba7a 79 if(mr==32) {
amarincan 3:56114a39ba7a 80 pc.printf("verde");
amarincan 3:56114a39ba7a 81 led2=!led2;
amarincan 3:56114a39ba7a 82 }
amarincan 3:56114a39ba7a 83 mr=32;
amarincan 3:56114a39ba7a 84
amarincan 3:56114a39ba7a 85
amarincan 3:56114a39ba7a 86 for(i=0;i<(num_bits);++i){
amarincan 3:56114a39ba7a 87 if(cadena[i]!=cadenab[i])
amarincan 3:56114a39ba7a 88 mb=100;
amarincan 3:56114a39ba7a 89 }
amarincan 3:56114a39ba7a 90 if(mb==32) {
amarincan 3:56114a39ba7a 91 pc.printf("azul");
amarincan 3:56114a39ba7a 92 led1=!led1;
amarincan 3:56114a39ba7a 93 }
amarincan 3:56114a39ba7a 94 mb=32;
amarincan 3:56114a39ba7a 95
amarincan 3:56114a39ba7a 96
amarincan 3:56114a39ba7a 97
tony63 2:6a15ab0305c8 98 }
tony63 2:6a15ab0305c8 99 }
amarincan 3:56114a39ba7a 100