Tarea 2-Procesadores 2016-2. Aldair Navarro
Dependencies: Pulse1 TextLCD mbed
Fork of irda_Sony by
main.cpp
- Committer:
- tony63
- Date:
- 2016-04-26
- Revision:
- 4:150bc6a5f5b4
- Parent:
- 3:82bebaf2a06a
- Child:
- 5:6d9292b2d5e3
File content as of revision 4:150bc6a5f5b4:
#include "mbed.h" #include <Pulse1.h> #include "stdio.h" #include "math.h" //control remoto sony disparo camara //puede convertir la trama en un entero //para cualquier tecla PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo Serial pc(USBTX, USBRX); DigitalOut led(LED1); DigitalOut led2(LED2); int header =0; //tiempo de cabecera pulso abajo const int head_H = 2976; //+10% medida con osciloscopio en microsegundos const int head_L = 1984;//-10% medida con osciloscopio int i=0, bin, potencia; const int T_alto=1200;//ponga su tiempo de la prueba const int T_bajo=639;//ponga su tiempo de la prueba const int num_bits = 20;//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 numero; int binM[20]; int bin_max[20]; int main(){ while(1){ ini1: fflush( stdin ); header=0; led2=1; led=1; header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header 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(400);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO led2=1; for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control num[i]=dato; wait_us(400); } wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla //pc.printf(",%d",header); for(i=0;i<(num_bits-1);++i){ //pc.printf(",%d",num[i]); } wait(0.1); //espero e imprimo en binario //pc.printf("\n\n"); for(i=0;i<(num_bits-1);++i){ if(num[i] > ((T_alto+T_bajo)/2)){ bin_max[i]=1; } else{ bin_max[i]=0; } } binM[0]=1; for(i=1;i<(num_bits-1);++i){ binM[i]=binM[i-1]*2; } numero=0; for(i=0;i<(num_bits-1);++i){ numero=numero+(binM[i]*bin_max[i]); } pc.printf("numero=%d",numero); if (numero==466221){ led2=0; wait(4); led2=1; goto ini1; } if (numero==466231){ led=0; wait(4); led=1; goto ini1; } } }