Tarea Reloj Ds3231

Dependencies:   mbed Debounced QEI ds3231 TextLCD Pulse1

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
+
+
+
+
+
+}