h

Dependencies:   QEI RTC-DS1307 TextLCD mbed

Revision:
0:448768f23e05
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Nov 29 01:30:37 2017 +0000
@@ -0,0 +1,299 @@
+// A continuación definimos las librerias necesarias para la ejecución de este programa
+#include "mbed.h"
+#include "Rtc_Ds1307.h"                 //Libreria para rtc
+#include "TextLCD.h"
+#include "DebouncedIn.h"
+#include "QEI.h"
+#include "debug.h"
+
+//Pines para el rtc
+Rtc_Ds1307 rtc (PTE0,PTE1);             //Definimos el DS1307
+
+//PINES DEL ENCODER Y LCD
+TextLCD lcd(PTB8, PTB9,PTB10,PTB11,PTE2, PTE3); //Puertos LCD rs, e, d4, d5, d6, d7
+QEI Encoder (PTA1, PTA2, NC, 624);               //Puertos de la tarjeta asignados para el Encoder
+
+//Definicion del puerto serial
+//Serial pc(USBTX, USBRX, "pc");          //Definimos la cominucacion serial
+
+DigitalOut led1(LED1);      //led de cambio de posición
+DigitalOut led2(LED2);      //led incremento de parámetros
+DigitalOut led3(LED3);      //led decremento de parámetros
+
+//BOTON DEL ENCODER
+DebouncedIn bot1(PTC17);    //cambiar la posición 
+
+DebouncedIn P2(PTC13);    //SET
+ 
+char buffer[128];
+char buffer2[128];
+int readptr = 0;
+int readptr2 = 0;
+char c,c2;
+int Config;
+int dia1=0,hora1=0,minuto1=0,on1=0;
+int dia2=0,hora2=0,minuto2=0,on2=0;
+int dia3=0,hora3=0,minuto3=0,on3=0;
+int dia4=0,hora4=0,minuto4=0,on4=0;
+int dia5=0,hora5=0,minuto5=0,on5=0;
+int dia6=0,hora6=0,minuto6=0,on6=0;
+int dia7=0,hora7=0,minuto7=0,on7=0;
+int dialarm;
+int bandera=0;
+int C1=0x0E;                // Muestra el cursor
+// 0x18;                // desplazamiento izquierda
+// 0x1A;                // desplazamiento derecha
+int C4=0x0C;
+
+int AT=0;
+int i=0;
+int j=1;
+int M2;
+char Mm[30];
+char Dd[30];
+char Hh[30];
+char MIN[30];
+char SEG[30];
+int valor;
+int val;
+//------------------------------------------------------------------------------
+int a,d,d2,M,min,h,seg,b,k; // indice de la variable
+int YE=2015;
+
+int p=0;
+int main() {
+    Rtc_Ds1307::Time_rtc tm = {};
+    led1=led2=led3=1;
+    lcd.printf("ALARMAS");
+    wait(1.5);
+    lcd.cls();
+    
+    
+   
+     //Inicio del ciclo
+     
+                 while(1) {  if (bot1==0 && d==0 && M==0 && YE==2015 && h==0 && min==0 && seg==0) 
+                             {AT=1;  
+                               }
+                                                
+                             if (AT==1){  
+                                                if(p==1){
+                                                lcd.cls();       //limpio la pantalla  
+                                                lcd.locate(5,1);
+                                                lcd.printf("SET UP");
+                                                wait(0.5);
+                                                lcd.cls();
+                                                  p=2;    
+                                                                                            
+                                                }
+                            
+                            
+                                            if (p==2){
+                                               
+                                                                    if (bot1.falling()) {            //----------------- Aumenta de posición el cursor a la primera línea de menu
+                                                                    led1=0;
+                                                                    wait(.15); 
+                                                                    led1=1;
+                                                                    ++a;
+                                                                    }
+                                                               if (p==2){     
+                                               valor = Encoder.getPulses();  }  //------------- Asigna el valor de los pulsos del encoder a una variable llamada "valor"                                                
+                                                                                                        
+                                                               
+                                                    switch(a) {
+                                                        case 0:
+                                                        lcd.printf("FECHA");
+                                                        wait(0.5);
+                                                        lcd.cls();
+                                                        break;
+                                        //CONFIGURACION DE LA FECHA
+                                                    case 1:
+                                                    
+                                                   //Dia
+                                                    tm.date = tm.date + valor;                //------------- Asigna el valor del encoder al parámetro dia y tiene en cuenta el valor anterior
+                                                    Encoder.reset();                //------------- Resetea el valor del encoder
+                                                    if (tm.date<=0){
+                                                        tm.date=1;                       //------------- No se admite valores negativos
+                                                        }
+                                                    if (tm.date>31){                      //Limito el valor del dia;
+                                                        tm.date=31;
+                                                        }
+                                                    
+                                                    lcd.locate(2,0);                //------------- Ubica e imprime el parámetro dia en la pantalla LCD
+                                                    lcd.printf("D",tm.date);
+                                                    lcd.locate(3,0);
+                                                    lcd.printf(":%d",tm.date);                        
+                                                    wait(0.15);
+                                   
+                                                    if (bot1.falling() && tm.date>0) {       //--------------Aumenta de posición el cursor a la segunda línea de menu
+                                                            a=2;
+                                                            led1=0;
+                                                            wait(.15); 
+                                                            led1=1;
+                                                            Encoder.reset();            //------------- Resetea el valor del encoder
+                                                            }
+                                                        break; 
+                                                    //Mes
+                                                    case 2:
+                                
+                                                    M = M + valor;        //------------- Asigna el valor del encoder al parámetro mes y tiene en cuenta el valor anterior
+                                                    Encoder.reset();        //------------- Resetea el valor del encoder
+                                                    if (M<=0){
+                                                    M=1;                   //------------- No se admite valores negativos
+                                                    }
+                                                    if (M>12){M =12;}  //Limito el valor de mes
+                                                    tm.mon=M;
+                                                    lcd.locate(10,0);       //------------- Ubica e imprime el parámetro "mes" en la pantalla LCD
+                                                    lcd.printf("M",tm.mon);
+                                                    lcd.locate(11,0);
+                                                    lcd.printf(":%d",tm.mon);                        
+                                                    wait(0.15);
+                                   
+                                                    if (bot1.falling()&& M>=1 && tm.date>=1 ) { //--------------Aumenta de posición el cursor a la tercera línea de menu    
+                                                                      
+                                    
+                                                        a=3;
+                                                        led1=0;
+                                                        wait(.15); 
+                                                        led1=1;
+                                                        Encoder.reset();      //------------- Resetea el valor del encoder
+                                                        }
+                                                    break; 
+                                         //AÑO           
+                                        case 3:
+                                        
+                                        YE = YE + valor;  //------------- Asigna el valor del encoder al parámetro año y tiene en cuenta el valor anterior
+                                        Encoder.reset();  //------------- Resetea el valor del encoder
+                                        if (YE<2015){
+                                        YE=2015;             //------------- No se admite valores negativos
+                                        }
+                                        if (YE>2030){ YE=2030;}  //Limito el valor de año
+                                        tm.year=YE;
+                                        lcd.locate(2,1);  //------------- Ubica e imprime el parámetro "año" en la pantalla LCD
+                                        lcd.printf("A",tm.year);
+                                        lcd.locate(3,1);
+                                        lcd.printf(":%d",tm.year);                                            
+                                        wait(0.15);
+                                        
+                                           if (bot1.falling()&& tm.date>0 && M>0 && YE>2015) { //--------------Aumenta de posición el cursor a la cuarta línea de menu         
+                                                                                                                              
+                                            a=4;
+                                            led1=0;
+                                            wait(.15);
+                                            led1=1;
+                                            Encoder.reset();    //------------- Resetea el valor del encoder
+                                            
+                                            }
+                                        break;
+                                           case 4:
+                                           lcd.cls(); 
+                                            lcd.printf("HORA");
+                                             wait(0.5);
+                                            lcd.cls();
+                                           if (bot1.falling()){
+                                           a=5;
+                                           }
+                                                break;
+                                        //Configuracion de la hora         
+                                            //HORA
+                                                case 5:
+                                                
+                                                h = h + valor; //------------- Asigna el valor del encoder al parámetro hora y tiene en cuenta el valor anterior
+                                                Encoder.reset(); //------------- Resetea el valor del encoder
+                                                if (h<0){
+                                                h=0;            //------------- No se admite valores negativos
+                                                }
+                                                if (h>23){ h=23;}   //Limito el valor de hora
+                                                tm.hour=h;
+                                                lcd.locate(2,0);                //------------- Ubica e imprime el parámetro "hora" en la pantalla LCD
+                                                lcd.printf("h=",tm.hour);
+                                                lcd.locate(3,0);
+                                                
+                                                    lcd.printf(":%d",tm.hour);                        
+                                                    wait(0.15);
+                                            
+                                                if (bot1.falling()&& h>0 ) {  //--------------Aumenta de posición el cursor a la cuarta línea de menu    
+                                                    a=6;
+                                                    led1=0;
+                                                    wait(.15); 
+                                                    led1=1;
+                                                    Encoder.reset();       //------------- Resetea el valor del encoder
+                                                    }  
+                                                   break;                                 
+                                                    
+                                            //Minutos
+                                            case 6:
+                                                min = min + valor; //------------- Asigna el valor del encoder al parámetro min y tiene en cuenta el valor anterior
+                                                Encoder.reset(); //------------- Resetea el valor del encoder
+                                                if (min<=0){
+                                                min=0;            //------------- No se admite valores negativos
+                                                }
+                                                if (min>61){
+                                                    min=60;}
+                                                    tm.min=min;
+                                                lcd.locate(10,0);       //------------- Ubica e imprime el parámetro "min" en la pantalla LCD
+                                                lcd.printf("m",&tm.min);
+                                                lcd.locate(11,0);
+                                                lcd.printf(":%d",&tm.min);                        
+                                                wait(0.15);    
+                                                if (bot1.falling()&& h>=0 && min>=0) {  //--------------Aumenta de posición el cursor a la cuarta línea de menu    
+                                                    a=7;
+                                                    led1=0;
+                                                    wait(.15); 
+                                                    led1=1;
+                                                    Encoder.reset();       //------------- Resetea el valor del encoder
+                                                    }  
+                                                   break;      
+                                              //Segundos     
+                                                case 7:
+                                                seg = seg + valor; //------------- Asigna el valor del encoder al parámetro seg y tiene en cuenta el valor anterior
+                                                Encoder.reset(); //------------- Resetea el valor del encoder
+                                                if (seg<=0){
+                                                seg=0;            //------------- No se admite valores negativos
+                                                } 
+                                                 if (seg>61){
+                                                    seg=60;}    
+                                                    tm.sec=seg;
+                                                lcd.locate(2,1);  //------------- Ubica e imprime el parámetro "seg" en la pantalla LCD
+                                                lcd.printf("s",seg);
+                                                lcd.locate(3,1);
+                                                lcd.printf(":%d",&tm.sec);                                            
+                                                wait(0.15);
+                                        
+                                           if (bot1.falling()&& h>=0 && min>=0 && seg>0) { //--------------Aumenta de posición el cursor a la cuarta línea de menu         
+                                                                                                                              
+                                            a=8;
+                                            led1=0;
+                                            wait(.15); 
+                                            led1=1;
+                                            p=3;
+                                            
+                                            Encoder.reset();    //------------- Resetea el valor del encoder
+                                            }
+                                                                                      
+                                            
+                                            if (p==3){    
+                                                                                 
+                                         lcd.cls(); 
+                                        //Fecha:
+                                        lcd.locate(0,0);
+                                      lcd.printf("F=%d/%d/%d",&tm.date,&tm.mon,&tm.year);
+                                        //Hora
+                                      lcd.locate(0,1);
+                                       lcd.printf("H=%d:%d:%d",&tm.hour,&tm.min,&tm.sec); 
+                                                                                                                 
+                                                }
+                                   
+                                                }                            
+                                            
+                                                                                      
+                                            
+                                            
+                                            
+                                              }
+                                                              }
+                                                               }
+                 
+           
+                                         
+}
\ No newline at end of file