prog contrl

Dependencies:   Pulse1 mbed

main.cpp

Committer:
omatorressan
Date:
2014-12-05
Revision:
1:2a7b4257ea32
Parent:
0:1602c72a91eb

File content as of revision 1:2a7b4257ea32:

#include "mbed.h"
#include <Pulse1.h>

PulseInOut irda(PTD5);
Serial pc(USBTX, USBRX);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);

int header =0;
const int head_H = 9120; //+20% medida con osciloscopio en microsegundos
const int head_L = 8939;//-20%  medida con osciloscopio
int i=0;
const int T_bajo=533;//tiempo de prueba
const int T_alto=1630;//tiempo de prueba
const int num_bits = 64;//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 azul=0;
int rojo=0;
int verde=0;

int cont1=0;
int cont2=0;
int cont3=0;
char serie[num_bits];

char a[]="100000001011111110000011011111001111100000001011111101001001101";
char b[]="100000001011111111001001001101101111100000001011111111001001001";
char c[]="100000001011111100110011110011001111100000001011111100110011110";
          
          //10000000101111111000001101111100
int main(){
    
led1=led2=led3=1;

    while(1) {
    ini1:
        fflush( stdin );
        header=0;
        header = irda.read_low_us();    //lee los pulsos en bajo
        if (header > head_L && header < head_H) goto seguir;//verifica que se cumpla el +-20%
        else goto ini1;

    seguir:
        wait_us(200);

        for(i=0; i<(num_bits-1); ++i) { 
            dato = irda.read_high_us(); //lee los pulso en alto
            num[i]=dato;
            wait_us(400);
                                       }




        wait(0.1);  //se hace una espera y se imprime
        pc.printf("\n\r");
        for(i=0; i<(num_bits); ++i) {
            if(num[i] > ((T_alto+T_bajo)/2)) {
            serie[i]='1';
            pc.printf("1");
                                             }
            else {
            serie[i]='0';
            pc.printf("0");
                  }
    
    if(serie[i]==a[i]){
    ++cont1;
    pc.printf("%d", cont1);
                       }
    
    if(serie[i]==b[i]){
    ++cont2;
    pc.printf("%d", cont2);
                       }
    
    if(serie[i]==c[i]){
    ++cont3;
    pc.printf("%d", cont3);
                       }
     
    
    
    if(cont1==num_bits-1){
        
    if(azul==0){
    led1=0;
    ++azul;}
        else{
        led1=1;
        azul=0;}
        
        cont1=cont2=cont3=0;
           }
                 
         if(cont2==num_bits-1){
        
        if(verde==0){
        led2=0;
        ++verde;}
        else{
        led2=1;
        verde=0;}
        
        cont1=cont2=cont3=0;
                               }
        
        if(cont3==num_bits-1){
        
        if(rojo==0){
        led3=0;
        ++rojo;}
        else{
        led3=1;
        rojo=0;}    
        
        cont1=cont2=cont3=0;
                              }
        
                                    } 
}
}