Tarea Reloj Ds3231
Dependencies: mbed Debounced QEI ds3231 TextLCD Pulse1
Diff: control1.h
- Revision:
- 0:6c5518885385
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/control1.h Fri Aug 30 14:05:20 2019 +0000 @@ -0,0 +1,244 @@ +#include "mbed.h" +#include <Pulse1.h> +#include "TextLCD.h" + +//PulseInOut irda(PTD0); +//Serial pc(USBTX, USBRX); +TextLCD lcd(PTB8,PTB9, PTB10, PTB11, PTE2, PTE3); //Pines LCD + +// esta libreria se realizo con la intension de verificar el correcto funcionamiento cuando necesito obtener un numero en vez de un vector. +// los numeros siguen siendo los mismo que en control.h, la diferencia radicara en el uso de un ciclo for para obtener el numero. + + +/* +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 j=0; +int Num1=0; +int Num2=0; +int Num3=0; +int Num4=0; +int NUM=0; + + +int control1(int A) // la variable a es la cantidad de digitos que va a tener el numero +{ + // se declaran las condiciones iniciales + j=0; + num=0; + NUM=0; + Num1=0; + Num2=0; + Num3=0; + Num4=0; + for(j=0; j<A; ++j) { // el ciclo for se va a recorrer las veces que el usuario solicita + +/////////////////////////////////////////////////////////////////////////////// + fflush( stdin ); // borra lo que se tenga en el irda + + + for(i=0; i<numb; ++i) { + + numP[i] = irda.read_high_us(); //funcion para leer un pulso alto + wait_us(300); + + } + for(i=0; i<numb; ++i) { // el vector que leyo en irda lo convierte a binario + if(numP[i]<800) { + numP[i]=0; + + } else { + numP[i]=1; + } + + + } //del for + + + + + a=0; + + // este codigo de aca hacia abajo lo que hace es la comparacion de cada uno de los numeros, si coinciden todos los bit la salida es el numero en hecadecimal. + for(i=2; i<numb; ++i) { + if(numP[i]==t1[i]) { + a++; + if(a==29) { + num=1; + + + } + } + } + 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; + + + } + } + } + pc.printf("\nel numero"); + pc.printf("\n%d",num); + wait(2); + ///////////////////////////////////////////////////////////77 + // arriba esta como se dijo la verificacion de cada uno de los numeros. + + // estos codigos de abajo sirven para crear los numeros que tienen mas de una unidad, se aplica unidades, decenas, y centenas para construir el numero. + if(j==0) { //unidades + pc.printf("\nprimero"); + Num1=num*1; + } + if(j==1) { //decenas + Num2=num*10; + } + if(j==2) {//centenas + Num3=num*100; + } + if(j==3) { + Num4=num*1000; + } + + + pc.printf("\n Antes de la suma"); + NUM=Num1+Num2+Num3+Num4; // se realiza la suma de los numeros + pc.printf("\nla suma"); + pc.printf("\n%d",NUM); + lcd.locate(8,0); + lcd.printf("\n%d",NUM); + wait(1); + + } + + a=0; // se reinician las variables de control + A=0; + pc.printf("\n%d",NUM); + return NUM; // se envia el numero + + + + + +}