trabajo de creacion de un despertador por i2c configurado por un encoder

Dependencies:   DebouncedIn QEI RTC-DS1307 mbed

Fork of I2C by German Camilo Diaz Mejia

Revision:
5:d38b972a1813
Parent:
4:fa48e78e9bba
diff -r fa48e78e9bba -r d38b972a1813 main.cpp
--- a/main.cpp	Fri Nov 20 13:49:02 2015 +0000
+++ b/main.cpp	Mon Nov 23 14:44:24 2015 +0000
@@ -7,7 +7,7 @@
 Serial pc(USBTX, USBRX, "pc");    //Puertos para el PC
 QEI wheel (PTD5, PTD0, NC, 100);  //Configuracion encoder
 DebouncedIn Boton(PTA13);        //Boton Encoder
-DigitalOut led1(LED1);          //Salida
+DigitalOut led1(PTD2);          //Salida
 
 int Dia=0;
 int Mes=0;
@@ -28,10 +28,10 @@
     {      
     pc.printf("*************************************\n");
     pc.printf("* Menu for RTC Test :               *\n");
-    pc.printf("* read  - reads the clock           *\n");
-    pc.printf("* start - start the clock           *\n");
-    pc.printf("* stop  - stop the clock            *\n");
-    pc.printf("* write - write the clock           *\n");
+    pc.printf("* leer  - reads the clock           *\n");
+    pc.printf("* empezar - start the clock           *\n");
+    pc.printf("* parar  - stop the clock            *\n");
+    pc.printf("* configurar - write the clock           *\n");
     pc.printf("* ena   - enable Square wave output *\n");
     pc.printf("* dis   - disable square wave outp. *\n");
     pc.printf("*************************************\n");
@@ -41,45 +41,50 @@
         buffer[readptr++] = c;
         }
         buffer[readptr++] = 0;
-            if (strncmp(buffer, "read", 4) == 0) 
+        
+        // para leer los valores que tiene el reloj 
+        
+            if (strncmp(buffer, "leer", 4) == 0)  
             {
             pc.printf("Performing read operation\n");
                 if (rtc.getTime(tm) ) 
                 {
-                pc.printf("La hora actual es: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
-                pc.printf("La fecha actual es: %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
+                pc.printf("La hora es: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);  // coloca en pantalla la hora actual que hay almacenada 
+                pc.printf("La fecha es: %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year); // coloca en pantalla la fecha actual que hay almacenada 
                 }
             
              }   
-        else if (strncmp(buffer, "write", 5) == 0) 
-            {
+        else if (strncmp(buffer, "configurar", 5) == 0)  // se empieza por configurar el reloj interno
             pc.printf("Dia (0..31)");
-            pc.scanf("%d", &tm.date);
+            pc.scanf("%d", &tm.date); // coloca lo que uno le ingrese como dia
             pc.printf("Mes (1..12)");
-            pc.scanf("%d", &tm.mon);
-            pc.printf("Anno");
-            pc.scanf("%d", &tm.year);
+            pc.scanf("%d", &tm.mon); // coloca lo que uno le ingrese como mes
+            pc.printf("Anio");
+            pc.scanf("%d", &tm.year); // coloca lo que uno le ingrese como año
             pc.printf("Hora (0..23)");
-            pc.scanf("%d", &tm.hour);
+            pc.scanf("%d", &tm.hour); // coloca lo que uno le ingrese como hora
             pc.printf("Minutos (0..59)");
-            pc.scanf("%d", &tm.min);
+            pc.scanf("%d", &tm.min); // coloca lo que uno le ingrese como minutos
             pc.printf("Segundos (0..59)");
-            pc.scanf("%d", &tm.sec);
+            pc.scanf("%d", &tm.sec); // coloca lo que uno le ingrese como segundos
             pc.printf("Performing write operation\n");
             
             while(pc.readable()) 
             pc.getc();
             rtc.setTime(tm, false, false);
             }
-        else if (strncmp(buffer, "start", 5) == 0) 
+            
+            // para empezar a correr el reloj que se programó arriba
+            
+        else if (strncmp(buffer, "empezar", 5) == 0)  
             {
             readptr = 0;
             pc.printf("Dispositivo Iniciado\n");
             rtc.startClock();
-            goto set_alarma;
+            goto alarma;
                         
         }
-        else if (strncmp(buffer, "stop", 4) == 0) 
+        else if (strncmp(buffer, "parar", 4) == 0) // para parar el reloj
         {
             pc.printf("Performing stop operation\n");
             rtc.stopClock();
@@ -103,12 +108,14 @@
         }
         readptr = 0;
         }
-                
-        set_alarma:          //se inicia a configurar la alarma
+        
+         //se inicia a configurar la alarma
+                 
+        alarma:         
         pc.printf("Configuracion de la alarma\n");
         
         
-        set_Dia:             //empieza con el dia 
+        Dia:             //empieza con el dia 
         while(1)
         {         
             Dia=Dia+wheel.getPulses();  //con el encoder se aumenta el dia 
@@ -119,19 +126,19 @@
             Dia=31;
             }
             else if (Dia<=0)
-            {          //no hay dias negativos, el valor se mantiene en 0 en caso de ingresar uno asi
+            {          //no se pueden ingresar numeros negativos
              Dia=0;
             }
-     pc.printf("Dia=  %d\n",Dia);        //muestra
+     pc.printf("Dia=  %d\n",Dia);        //muestra el valor 
     
     
     if(Boton.falling())
-    {              //con el enconder presionado pasamos a mes
-    goto set_Mes;
+    {                    //presionando el encoder cambiamos al configurar el mes
+    goto Mes;
     }
     }
         
-set_Mes:                           //Configuracion del Mes para la alarma
+Mes:                           //Configuracion del Mes para la alarma
 
         while(1)
         {
@@ -144,7 +151,7 @@
                 Mes=12;
             }
             else if (Mes<=0)
-            {              //de igual forma mantiene en 0 a un valor menor
+            {                 //se mantiene en 0 
              Mes=0;
             }
      pc.printf("Mes=  %d\n ",Mes);          //muestra el mes
@@ -152,35 +159,36 @@
     
     if(Boton.falling())
     {
-        goto set_Anio;
+        goto Anio;
     }
     
             
     }
-     set_Anio:
+     
+     Anio:
         while(1)
         {         
             Anio=Anio+wheel.getPulses();
             wheel.reset();
  
      
-            if(Anio>=3000) //se mantiene hasta el anio 3000 si se ingresa un anio mas grande
+            if(Anio>=3000) //se mantiene hasta el año 3000 si se ingresa un año mas grande
             {
                 Anio=3000;
             }
             else if (Anio<=2015){ //como estamos en el 2015 una alarma no puede sonar antes de esa fecha
              Anio=2015;
             }
-     pc.printf("Anno=  %d\n",Anio);
+     pc.printf("Anio=  %d\n",Anio);
     
     
-    if(Boton.falling())
+    if(Boton.falling()) //presionando el encoder cambiamos a configurar la hora
     {
-        goto set_Horas;
+        goto Horas;
     }
         
     }
-    set_Horas:
+    Horas:
         while(1)
         {
         
@@ -199,13 +207,13 @@
      pc.printf(" Hora=%d\n ",Horas);
     
     
-    if(Boton.falling()){
-        goto set_Minutos;
+    if(Boton.falling()){  //presionando el encoder cambiamos a configurar los minutos
+        goto Minutos;
     }
             
             
     }
-     set_Minutos:
+     Minutos:
         while(1)
         {
          
@@ -221,29 +229,31 @@
             {
              Minutos=0;
             }
-     pc.printf(" Min=%d\n ",Minutos);
+     pc.printf(" Minuto=%d\n ",Minutos);
     
     
     if(Boton.falling())
     {
-        goto set_comp;
+        goto comp;
     }
    
     }
     
-    set_comp:
+    comp:       // para que muestre cuándo quedó configurada la alarma
     
     pc.printf("La alarma se programara el:   \n");
-    pc.printf(" Dia=%d    Mes=%d    Anio=%d    Hora=%d    Min=%d    Seg=%d\n ",Dia,Mes,Anio,Horas,Minutos,Segundos);
+    pc.printf(" Dia=%d    Mes=%d    Anio=%d    Hora=%d    Minuto=%d    Segundo=%d\n ",Dia,Mes,Anio,Horas,Minutos,Segundos);
+    
+    wait (3);
     
     while(1)
     {
        rtc.getTime(tm);
-       pc.printf("La hora actual es:  %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
-       pc.printf("La fecha actual es:  %02d/%02d/%04d\n", tm.mon, tm.date, tm.year);
+       pc.printf("Hora actual:  %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
+       pc.printf("Fecha actual:  %02d/%02d/%04d\n", tm.mon, tm.date, tm.year);
     if(tm.hour>=Horas && tm.min>=Minutos &&tm.sec>=Segundos && tm.mon>=Mes && tm.date>=Dia && tm.year>=Anio){
         led1=0;
-        pc.printf("La alarma se ha activado:   \n");
+      //  pc.printf("La alarma se ha activado:   \n");
     }
     else {
         led1=1;