Configuracion de Alarma y Hora, mediante LCD y Teclado, Navego por el menu con las teclas A, B, D, *, #.

Dependencies:   Debounced FPointer RTC-DS1307 TextLCD keypad mbed

main.cpp

Committer:
Jesse
Date:
2014-05-08
Revision:
0:8471537b0784

File content as of revision 0:8471537b0784:

//el Puerto Serial
//Jesse Mauricio Beltran
//Michelle Maceas Henao

#include "mbed.h"
#include "Rtc_Ds1307.h"
#include "TextLCD.h"
#include "DebouncedIn.h"
#include "keypad.h"

PwmOut Pwm(PTA5);
DebouncedIn Aumen(PTC10);
DebouncedIn Panta(PTC11);
DebouncedIn Decre(PTC6);
DebouncedIn Ensayo(PTC7);


TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7#include "TextLCD.h"
Rtc_Ds1307 rtc(PTE0,PTE1);
Serial pc(USBTX, USBRX);

int Start=0,Read=0,Write=0,Menu=0,Menu2=0,Hora=0,Minuto=0,Segundo=0,pp=0,Dia=0,Dya=0,Mes=0,Anno=2014,Encendido=0,Aumen2=0,Decre2=0,flag2=0;
float ppp=0.001;
float Dd=0.1;
int p=0,c=0,d=0,e=0,flag=0,ff=0,hh=0;
int key;


int PWMmodule(float ppp,float Dd)
{
        Pwm.period(ppp);
        Pwm.write(Dd);
        wait(0.2);
        Pwm.write(0); 
        return 0;
}


char Keytable[] = { '1', '2', '3', 'A',
                     '4', '5', '6', 'B',
                      '7', '8', '9', 'C',
                      '*', '0', '#', 'D'
                    };

uint32_t cbAfterInput(uint32_t Key)
{
        
        key=Key;
        if(Keytable[key]=='B')
        {
            PWMmodule(ppp,Dd); 
            Write=0;
            Read=1;
            lcd.cls();
            lcd.printf("Configuacion de");
            lcd.locate(0,1);
            lcd.printf("     Alarma");
            wait(2);
            lcd.cls();
            lcd.printf("Presione D");
        }
        if(Keytable[key]=='A')
        {
            PWMmodule(ppp,Dd); 
            Write=1;
            Read=0;
            lcd.cls();
            lcd.printf("Configuacion del");
            lcd.locate(0,1);
            lcd.printf("      Reloj");
            wait(2);
            lcd.cls();
            lcd.printf("Presione D");
        }
        
        if(Keytable[key]=='D')
        {
            Menu=Menu+1;
        }
        if(Keytable[key]=='*')
        {
            Aumen2=1;
        }
        if(Keytable[key]=='#')
        {
            Decre2=1;
        }
        
        return 0;
}

int main()
{
    Keypad keypad(PTA2,PTD4,PTD3,PTD1,PTD2,PTD0,PTD5,PTA13);
    keypad.CallAfterInput(&cbAfterInput);
    keypad.Start();  // energiza las columnas C0-C3 Del Keypad
    Rtc_Ds1307::Time_rtc tm = {};
    
    lcd.printf("   Bienvenido  ");
    wait(1);
    lcd.locate(0,1);
    lcd.printf("  Presione:");
    wait(2);
    lcd.cls();
    lcd.locate(0,0);
    lcd.printf("A.Config Reloj");
    lcd.locate(0,1);
    lcd.printf("B.Config Alarma");
    wait(2);
    
    
    while(1)
    {   
        
        if(Read==1)
        {
            flag2=0;
            if(Menu==1)
            {      
                lcd.cls();
                lcd.printf("Ingrese el Dia");  
                wait(0.1);             
            }
            if(Menu==2)
            {
                lcd.cls();
                lcd.printf("Ingrese la Hora");
                wait(0.1);
            }
            if(Menu==3)
            {
                lcd.cls();
                lcd.printf("Ingrese Minutos");
                wait(0.1);   
            }
            if(Menu==4)
            {
                    lcd.cls();
                    lcd.printf("   Guardados !");
                    wait(0.1);
                    wait(1);
                    lcd.cls();
                    lcd.printf(".....En breve..... ");
                    lcd.locate(0,1);
                    lcd.printf(".....La Hora!....");
                    wait(2);
                    lcd.cls();
                    Menu=0;
                    flag2=1;
                    Read=0;
            }
               
            if(Aumen2==1)
            {
                flag2=0;
                Aumen2=0;
                if(Menu==3)
                {
                    if(c<59)
                    {
                        lcd.cls();
                        c=c+1;
                        lcd.locate(0,1);
                        lcd.printf("Minutos: %d",c);
                        wait(0.1);
                    }
                    else
                    {
                        c=0;
                    }
                }
                if(Menu==2)
                {
                    if(d<23)
                    {
                        lcd.cls();
                        d=d+1;
                        lcd.locate(0,1);
                        lcd.printf("Horas %d",d);
                        wait(0.1);
                    }
                    else
                    {
                        d=0;
                    }
                }    
                if(Menu==1)
                {
                   if(e<7)
                    {
                        lcd.cls();
                        e=e+1;
                        lcd.locate(0,1);
                        lcd.printf("Dia: %d",e);  
                        wait(0.1);  
                    }
                    else
                    {
                        e=0;    
                    } 
                }  
            }  
            
             if(Decre2==1)
            {
                flag2=0;
                Decre2=0;
                if(Menu==3)
                {
                    if(c>0)
                    {
                        lcd.cls();
                        c=c-1;    
                        lcd.locate(0,1);
                        lcd.printf("Minutos: %d",c);
                        wait(0.1);
                    }
                    else
                    {
                        c=0;
                    }
                }
                if(Menu==2)
                {   
                    if(d>0)
                    {
                        lcd.cls();
                        d=d-1;    
                        lcd.locate(0,1);
                        lcd.printf("Hora: %d",d);
                        wait(0.1);
                    }
                    else
                    {
                        d=0;
                    }                        
                }
                if(Menu==1)
                {
                    if(e>0)
                    {
                        lcd.cls();
                        e=e-1;    
                        lcd.locate(0,1);
                        lcd.printf("Dia: %d",e);
                        wait(0.1);
                    }
                    else
                    {
                        e=0;
                    }      
                }
                 
            }
            
        }
        if(Write==1)
        {
            if(Menu==1)
            {
                lcd.cls();
                lcd.printf("Ingrese Hora");
                wait(0.1);
            }
            if(Menu==2)
            {
                lcd.cls();
                lcd.printf("Ingrese Min");
                wait(0.1);
            }
            if(Menu==3)
            {
                lcd.cls();
                lcd.printf("Ingrese Seg)");
                wait(0.1);
            }
            if(Menu==4)
            {
                lcd.cls();
                lcd.printf("Dia semana(1-7)");
                wait(0.1);
            }
            if(Menu==5)
            {
                lcd.cls();
                lcd.printf("Ingrese Dia");
                wait(0.1);
            }
            if(Menu==6)
            {
                lcd.cls();
                lcd.printf("Ingrese Mes");
                wait(0.1);
            }
            if(Menu==7)
            {
                lcd.cls();
                lcd.printf("Ingrese Ano");
                wait(0.1);
            }
            if(Menu==8)
            {
                lcd.cls();
                lcd.printf(" Datos Guardados!");
                wait(1);   
                Menu=0; 
                lcd.cls();
                rtc.setTime(tm, false, false);
                rtc.startClock();
                wait(0.2);
                flag2=1;
                lcd.cls();
                lcd.printf(".....En breve....");
                lcd.locate(0,1);
                lcd.printf(".....La Hora!....");
                wait(2);
                lcd.cls();
                Write=0;
            }
        }
            
        if(Aumen2==1)
        {
            Aumen2=0;
            if(Menu==1)
            {
                lcd.cls();
                lcd.printf("Ingrese Hora");
                if(tm.hour<23)
                {
                tm.hour=tm.hour+1;
                lcd.locate(0,1);
                lcd.printf("Hora:%d",tm.hour);
                wait(0.2);
                }
                else
                {
                Hora=0;
                }
            }   
            if(Menu==2)
            {
                lcd.cls();
                lcd.printf("Ingrese Min");
                if(tm.min<59)
                {
                tm.min=tm.min+1;
                lcd.locate(0,1);
                lcd.printf("Minutos:%d",tm.min);
                wait(0.2);
                }
                else
                {
                Minuto=0;
                }
            }
            if(Menu==3)
            {
                lcd.cls();
                lcd.printf("Ingrese Seg");
                if(tm.sec<59)
                {
                tm.sec=tm.sec+1;
                lcd.locate(0,1);
                lcd.printf("Segundos:%d",tm.sec);
                wait(0.2);
                }
                else
                {
                Segundo=0;
                }
            }
            if(Menu==4)
            {
                if(tm.wday<7)
                {
                tm.wday=tm.wday+1;
                lcd.locate(0,1);
                lcd.printf("Dia:%d",tm.wday);
                wait(0.2);
                }
                else
                {
                Dia=0;
                }
            }
            if(Menu==5)
            { 
                lcd.cls();
                lcd.printf("Ingrese Dia");
                if(Dya<31)
                {
                tm.date=tm.date+1;
                lcd.locate(0,1);
                lcd.printf("Dia:%d",tm.date);
                wait(0.2);
                }
                else
                {
                Dya=0;
                }
            }
            if(Menu==6)
            {
                lcd.cls();
                lcd.printf("Ingrese Mes");
                if(tm.mon<12)
                {
                tm.mon=tm.mon+1;
                lcd.locate(0,1);
                lcd.printf("Mes:%d",tm.mon);
                wait(0.2);
                }
                else
                {
                Mes=0;
                }
            }
            if(Menu==7)
            {
                lcd.cls();
                lcd.printf("Ingrese Ano");
                Anno=Anno+1;
                lcd.locate(0,1);
                lcd.printf("Ano:%d",Anno);
                wait(0.2);
                tm.year=Anno;
            }
            
        }
        if(Decre2==1)
        {
            Decre2=0;
            
            if(Menu==1)
            {
                if(tm.hour>0)
                {
                tm.hour=tm.hour-1;
                lcd.locate(0,1);
                lcd.printf("Hora:%d",tm.hour);
                wait(0.1);
                }
            }   
            if(Menu==2)
            {
                if(tm.min>0)
                {
                tm.min=tm.min-1;
                lcd.locate(0,1);
                lcd.printf("Minutos:%d",tm.min);
                wait(0.1);
                }
            }
            if(Menu==3)
            {
                if(tm.sec>0)
                {
                tm.sec=tm.sec-1;
                lcd.locate(0,1);
                lcd.printf("Segundos:%d",tm.sec);
                wait(0.1);
                }
            }
            if(Menu==4)
            {
                if(tm.wday>0)
                {
                tm.wday=tm.wday-1;
                lcd.locate(0,1);
                lcd.printf("Dia:%d",tm.wday);
                wait(0.1);
                }
            }
            if(Menu==5)
            {
                if(tm.date>0)
                {
                tm.date=tm.date-1;
                lcd.locate(0,1);
                lcd.printf("Dia:%d",tm.date);
                wait(0.1);
                }
            }
            if(Menu==6)
            {
                if(tm.mon>0)
                {
                tm.mon=tm.mon-1;
                lcd.locate(0,1);
                lcd.printf("Mes:%d",tm.mon);
                wait(0.1);
                }
            }
            if(Menu==7)
            {
                if(Anno>0)
                {
                Anno=Anno-1;
                lcd.locate(0,1);
                lcd.printf("Ano:%d",Anno);
                wait(0.1);
                tm.year=Anno;
                }
            }
            
        }
        
        if((flag2==1)&&(Write==0)&&(Read==0)&&(Menu==0))
        {
            rtc.getTime(tm);
                lcd.cls();
                lcd.locate(0,1);            // Print and refresh data on line 2 of the LCD display     
                lcd.printf("%.2D",tm.hour);
                lcd.printf(":%.2D",tm.min);
                lcd.printf(":%.2D",tm.sec);
                lcd.locate(0,0);
                lcd.printf("%.2D",tm.mon);
                lcd.printf("/%.2D",tm.date);
                lcd.printf("/%.2D",Anno);
                
        
                if (tm.wday == 6){
                    lcd.printf(" Frid\n");
                    wait(0.2);}
                if (tm.wday == 7){
                    lcd.printf("  Sat\n");
                    wait(0.2);}   
                if (tm.wday == 1){
                    lcd.printf(" Sun\n");
                    wait(0.2);}
                if (tm.wday == 2){
                    lcd.printf("  Mon\n");
                    wait(0.2);}
                if (tm.wday == 3){
                    lcd.printf(" Tues\n");
                    wait(0.2);}
                if (tm.wday == 4){
                    lcd.printf("  Wed\n");
                    wait(0.2);}
                if (tm.wday == 5){
                    lcd.printf(" Thur\n");
                    wait(0.2);}
                wait(0.1);
        }
                    
        //Momento para la Alarma
        if((tm.hour==d)&(tm.min==c)&(tm.wday==e)&&(tm.hour!=0)&&(Write==0)&&(Read==0)&&(Menu==0))
        {
            flag=1;
        }
        if(flag==1)
        {
            PWMmodule(ppp,Dd);
            flag2=0;
            lcd.cls();
            lcd.printf("   Alarma!!");
            lcd.locate(0,1);
            lcd.printf("*.Pos  #.Desact");
            if(Aumen2==1)
            {
                Aumen2=0;
                lcd.cls();
                lcd.printf("Se pospone 1min");
                wait(1);
                c=c+2;   
                flag=0; 
                flag2=1;
            }
            
            if(Decre2==1)
            {
                
                lcd.cls();
                lcd.printf("Se ha desactivado");
                lcd.locate(0,1);
                lcd.printf("  la Alarma");
                wait(1);
                flag=0;
                flag2=1;
                d=0;
                c=0;
                e=0;  
                Decre2=0; 
            }
        }            
    }      
}