h

Dependencies:   QEI RTC-DS1307 TextLCD mbed

main.cpp

Committer:
Gambetica
Date:
2017-11-29
Revision:
0:448768f23e05

File content as of revision 0:448768f23e05:

// 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); 
                                                                                                                 
                                                }
                                   
                                                }                            
                                            
                                                                                      
                                            
                                            
                                            
                                              }
                                                              }
                                                               }
                 
           
                                         
}