Tarea_I2C_Alarma

Dependencies:   DebouncedIn QEI RTC-DS1307 mbed

Files at this revision

API Documentation at this revision

Comitter:
szapataa
Date:
Mon Nov 23 15:12:03 2015 +0000
Commit message:
Tarea_I2C_Alarma

Changed in this revision

DebouncedIn.lib Show annotated file Show diff for this revision Revisions of this file
QEI.lib Show annotated file Show diff for this revision Revisions of this file
RTC-DS1307.lib Show annotated file Show diff for this revision Revisions of this file
debug.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 642fe2aac275 DebouncedIn.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DebouncedIn.lib	Mon Nov 23 15:12:03 2015 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/cmorab/code/DebouncedIn/#dc1131de43e8
diff -r 000000000000 -r 642fe2aac275 QEI.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QEI.lib	Mon Nov 23 15:12:03 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/aberk/code/QEI/#5c2ad81551aa
diff -r 000000000000 -r 642fe2aac275 RTC-DS1307.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RTC-DS1307.lib	Mon Nov 23 15:12:03 2015 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/leihen/code/RTC-DS1307/#5627b407e097
diff -r 000000000000 -r 642fe2aac275 debug.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debug.h	Mon Nov 23 15:12:03 2015 +0000
@@ -0,0 +1,16 @@
+#ifndef __DEBUG_H__
+#define __DEBUG_H__
+
+
+#ifdef DEBUG
+#define INFO(x, ...) std::printf("[INFO: %s:%d]"x"\r\n", __FILE__, __LINE__, ##__VA_ARGS__);
+#define WARN(x, ...) std::printf("[WARN: %s:%d]"x"\r\n", __FILE__, __LINE__, ##__VA_ARGS__);
+#define ERR(x, ...) std::printf("[ERR: %s:%d]"x"\r\n", __FILE__, __LINE__, ##__VA_ARGS__);
+#else
+#define INFO(x, ...)
+#define WARN(x, ...)
+#define ERR(x, ...)
+#endif
+
+
+#endif
\ No newline at end of file
diff -r 000000000000 -r 642fe2aac275 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Nov 23 15:12:03 2015 +0000
@@ -0,0 +1,312 @@
+#include "mbed.h"
+#include "Rtc_Ds1307.h"
+#include "DebouncedIn.h" 
+#include "QEI.h"
+ 
+//RtcCls rtc(p28, p27, p29, true);
+Rtc_Ds1307 rtc(PTE0,PTE1); /*modulo I2C*/
+ 
+Serial pc(USBTX, USBRX, "pc");
+ 
+ 
+//Configuracion encoder
+QEI wheel (PTA5, PTA4, NC, 100);
+ 
+//Botones
+DebouncedIn BotonENC(PTD5);  //Boton Encoder
+ 
+DebouncedIn Boton2(PTE2);  //Boton para confirmar
+ 
+//salida led
+DigitalOut myled(LED1);
+int dia=0,mes=0,anno=2015,hor=0,min=0,seg=0;
+ 
+char buffer[128];
+int readptr = 0;
+int start=0;
+int Config;
+ 
+int main() {
+    char c;
+    Rtc_Ds1307::Time_rtc tm = {};
+    
+    while(1) {
+        
+        set_reloj:
+       
+        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("* ena   - enable Square wave output *\n");
+        pc.printf("* dis   - disable square wave outp. *\n");
+        pc.printf("*************************************\n");
+        
+        while( (c = pc.getc()) != '\n') {
+            buffer[readptr++] = c;
+        }
+        buffer[readptr++] = 0;
+        if (strncmp(buffer, "read", 4) == 0) {
+            //  perform read
+            pc.printf("Performing read operation\n");
+            if (rtc.getTime(tm) ) {
+                pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
+                pc.printf("The current date is : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
+            }
+            
+        }
+        else if (strncmp(buffer, "write", 5) == 0) {
+            //  perform write
+            pc.printf("Enter the date (date 0..31)");
+            pc.scanf("%d", &tm.date);
+            pc.printf("Enter the date (month 1..12)");
+            pc.scanf("%d", &tm.mon);
+            pc.printf("Enter the date (year)");
+            pc.scanf("%d", &tm.year);
+            pc.printf("Enter the time (hours 0..23)");
+            pc.scanf("%d", &tm.hour);
+            pc.printf("Enter the time (minutes 0..59)");
+            pc.scanf("%d", &tm.min);
+            pc.printf("Enter the time (seconds 0..59)");
+            pc.scanf("%d", &tm.sec);
+            pc.printf("Performing write operation\n");
+            
+            while(pc.readable()) 
+                pc.getc();
+            rtc.setTime(tm, false, false);
+        }
+        else if (strncmp(buffer, "start", 5) == 0) {
+            //  start
+            readptr = 0;
+            pc.printf("Dispositivo Iniciado\n");
+            rtc.startClock();
+            goto set_prev;
+            
+            
+        }
+        else if (strncmp(buffer, "stop", 4) == 0) {
+            //  stop
+            pc.printf("Performing stop operation\n");
+            rtc.stopClock();
+        }
+        else if (strncmp(buffer, "ena", 3) == 0) {
+            int rs;
+            pc.printf("Please specify the frequency : [0 = 1Hz, 1 = 4.096kHz, 2 = 8.192kHz, 3 = 32.768kHz] ");
+            scanf("%d", &rs);
+            pc.printf("Enabling the output with %d option\n", rs);
+            rtc.setSquareWaveOutput(true, (Rtc_Ds1307::SqwRateSelect_t)rs);
+        }
+        else if (strncmp(buffer, "dis", 3) == 0) {
+            pc.printf("Disableing square wave output\n");
+            rtc.setSquareWaveOutput(false, Rtc_Ds1307::RS1Hz);
+        }
+        else {
+            pc.printf("syntax error\n");
+        }
+        readptr = 0;
+        //pc.printf("\n\n\n");
+        }
+
+
+        set_prev:
+        
+        
+        if (Config ==1){
+            readptr = 0;
+            goto set_reloj;
+            }
+        
+                  
+       
+        
+        set_alarma:
+        pc.printf("******* Configuracion Alarma *******\n");
+        
+        
+   /*inicia seleccion anno*/
+     set_anno:
+        while(1){
+         
+            anno=anno+wheel.getPulses();
+            wheel.reset();
+            
+            /*restriccion del año--no se puede config alarma hacia el pasado*/
+            
+            if(anno>=2100){
+                anno=2100;
+            }
+            else if (anno<=2015){
+             anno=2015;
+            }
+     pc.printf("*Anno=%d\n ",anno);
+    
+    
+    if(BotonENC.falling()){
+        goto set_mes;
+    }
+    if(Boton2.falling()){
+        goto set_comp;
+    }       
+            
+    }
+  /*termina seleccion anno*/
+  
+        /*seleccion mes*/
+        set_mes:
+        while(1){
+         
+            mes=mes+wheel.getPulses();
+            wheel.reset();
+            
+            /*restricción mes--maximo 12 meses*/
+     
+            if(mes>=12){
+                mes=12;}
+            else if (mes<=0){
+             mes=0;}
+     pc.printf("*Mes=%d\n ",mes);
+     
+    if(BotonENC.falling()){
+        goto set_dia;}
+    if(Boton2.falling()){
+        goto set_comp;}
+            
+    }
+   /*termina seleccion mes*/
+   
+     /*inicia dia*/   
+        set_dia:
+        while(1){
+         
+            dia=dia+wheel.getPulses();
+            wheel.reset();
+          /*restricción al numero de dias--maximo 31--*/
+            if(dia>=31){
+                dia=31;}
+            else if (dia<=0){
+             dia=0;}
+             
+     pc.printf("*Dia=%d\n ",dia);
+    
+    if(BotonENC.falling()){
+        goto set_hor;
+        }
+    if(Boton2.falling()){
+        goto set_comp;
+    }
+    }
+        /*termine dia*/
+  /*inicia seleccion hora*/
+    set_hor:
+        while(1){
+         
+            hor=hor+wheel.getPulses();
+            wheel.reset();
+            
+            /*restriccion de la hora--no puede ser mayor de 23*/
+     
+            if(hor>=23){
+                hor=23;
+            }
+            else if (hor<=0){
+             hor=0;
+            }
+     pc.printf("*Hora=%d\n ",hor);
+    
+    
+    if(BotonENC.falling()){
+        goto set_min;
+    }
+    if(Boton2.falling()){
+        goto set_comp;
+    }
+    
+               
+    }
+    /*finaliza la seleccion de la hora*/
+    
+    /*seleccion min*/
+     set_min:
+        while(1){
+         
+            min=min+wheel.getPulses();
+            wheel.reset();
+            
+            /*restriccion de la hora--no puede ser mayor a 59*/
+     
+            if(min>=59){
+                min=59;
+            }
+            else if (min<=0){
+             min=0;
+            }
+     pc.printf("*Min=%d\n ",min);
+    
+    if(BotonENC.falling()){
+        goto set_seg;
+    }
+    if(Boton2.falling()){
+        goto set_comp;
+    }
+    
+    }
+    /*termina la seleccion de los minutos*/
+    
+    /*seleccionar segundos*/
+    set_seg:
+        while(1){
+         
+            seg=seg+wheel.getPulses();
+            wheel.reset();
+            
+            /*restriccion de los segundos--no puede ser mas de 59*/
+            
+            if(seg>=59){
+                seg=59;
+            }
+            else if (seg<=0){
+             seg=0;
+            }
+     pc.printf("*Seg=%d\n ",seg);
+    
+    if(BotonENC.falling()){
+        goto set_anno;
+    }
+    if(Boton2.falling()){
+        goto set_comp;
+    }
+           
+            
+    }
+    /*termina la seleccion de los segundos*/
+    
+    set_comp:
+    
+    pc.printf("Alarma configurada para: \n");
+    pc.printf(" Anno=%d\n ",anno); /* imprime el año */
+    pc.printf(" Mes=%d\n ",mes);   /* imprime el mes */
+    pc.printf(" Dia=%d\n ",dia);   /* imprime el dia */
+    pc.printf(" Hora=%d\n ",hor);  /* imprime la hora */
+    pc.printf(" Min=%d\n ",min);   /* imprime los minutos */
+    pc.printf(" Seg=%d\n ",seg);   /* imprime los segundos */
+    wait(3);
+    
+    /*comparamos la alarma programada con la hora del reloj, si coincide
+    prende el led*/
+    while(1){
+       rtc.getTime(tm);
+       pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
+       
+    if(tm.hour>=hor && tm.min>=min &&tm.sec>=seg && tm.mon>=mes && tm.date>=dia && tm.year>=anno){
+        myled=0;
+    }
+    else {
+        myled=1;
+        }
+        wait(1);
+    }
+     ////   
+     
+    }
\ No newline at end of file
diff -r 000000000000 -r 642fe2aac275 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Nov 23 15:12:03 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/9296ab0bfc11
\ No newline at end of file