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
Diff: main.cpp
- Revision:
- 0:8471537b0784
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu May 08 22:38:48 2014 +0000 @@ -0,0 +1,588 @@ +//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; + } + } + } +}