Tarea Reloj Ds3231
Dependencies: mbed Debounced QEI ds3231 TextLCD Pulse1
Diff: control.h
- Revision:
- 0:6c5518885385
diff -r 000000000000 -r 6c5518885385 control.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/control.h Fri Aug 30 14:05:20 2019 +0000 @@ -0,0 +1,193 @@ +#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 + + + + + +}