Tarea Reloj Ds3231

Dependencies:   mbed Debounced QEI ds3231 TextLCD Pulse1

control.h

Committer:
dsuranr15
Date:
2019-08-30
Revision:
0:6c5518885385

File content as of revision 0:6c5518885385:

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

// esta libreria se usa para la comprobacion del numero que el control esta pulsando.

PulseInOut irda(PTD0); // se leen los datos del irda
Serial pc(USBTX, USBRX);

// estas cadenas se identificaron previamente con ayuda del programa captura.irda se le realizo una modificacion para obtener los valores en binario
int ok[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,1,1,0,1,0,0};
int t1[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,1,1};
int t2[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,1,1,1};
int t3[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,1,1};
int t4[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,1};
int t5[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,1,1};
int t6[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,1,1,1};
int t7[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,1};
int t8[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1};
int t9[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1};
int t0[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,1,1};
int po[33]= {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1};
int t77[33]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,1,0,0,1,1,1,0};
int i=0;
int numb=32;
int numP[33];
int a=0;
int cont=0;
int b=0;
int si=0;
int num=0;

int control()
{
    


    fflush( stdin ); // se borra los datos de irda
    num=0;

    for(i=0; i<numb; ++i) { // vector que lee los datos de irda

        numP[i] = irda.read_high_us();    //funcion para leer un pulso alto
        wait_us(300);
        
    }
    for(i=0; i<numb; ++i) { // se transforman a binario
        if(numP[i]<800) {
            numP[i]=0;

        } else {
            numP[i]=1;
        }


    }  //del for




    a=0; 
    
    // se compara la cadena que llega con cada uno de los vectores identificados anteriormente, con el que tenga coincidencia, sera el numero.
    for(i=2; i<numb; ++i) {
        if(numP[i]==t1[i]) { // se compara uno a uno
            a++;       // si son iguales se suman
            if(a==29) { // si la suma llega a 29 es porque son iguales.
                num=1;       // realiza la identificacion del numero
               
               
            }
        }
    }
    a=0;
     for(i=2; i<numb; ++i) {
        if(numP[i]==t2[i]) {
            a++;
            if(a==29) {
                a=0;
                num=2;
                
            }
        }
    }
    a=0;
     for(i=2; i<numb; ++i) {
        if(numP[i]==t3[i]) {
            a++;
          
            if(a==29) {
                a=0;
                num=3;
            }
        }
    }
     a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==t4[i]) {
            a++;
            if(a==29) {
                num=4;
               
               
            }
        }
    }
     a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==t5[i]) {
            a++;
            if(a==29) {
                num=5;
               
               
            }
        }
    }
     a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==t6[i]) {
            a++;
            if(a==29) {
                num=6;
               
               
            }
        }
    }
     a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==t7[i]) {
            a++;
            if(a==29) {
                num=7;
               
               
            }
        }
    }
     a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==t8[i]) {
            a++;
            if(a==29) {
                num=8;
               
               
            }
        }
    }
     a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==t9[i]) {
            a++;
            if(a==29) {
                num=9;
               
               
            }
        }
    }
      a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==po[i]) {
            a++;
            if(a==29) {
                num=88;
               
               
            }
        }
    }
      a=0; 
    for(i=2; i<numb; ++i) {
        if(numP[i]==ok[i]) {
            a++;
            if(a==29) {
                num=99;
               
               
            }
        }
    }
     
     //Todos los casos se realizan igual que el primero, en este caso se hace el envio del numero
     a=0;
     pc.printf("\n%d",num);
    return num; // se envia el numero





}