Ejemplo RTC

Dependencies:   Debounced FPointer RTC-DS1307 TextLCD keypad mbed

Fork of IngresoHORA by Jesse Beltran

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //lectura del Puerto Serial
00002 //Jesse Mauricio Beltran
00003 //Michelle Maceas Henao
00004 
00005 #include "mbed.h"
00006 #include "Rtc_Ds1307.h"
00007 #include "TextLCD.h"
00008 #include "DebouncedIn.h"
00009 #include "keypad.h"
00010 
00011 PwmOut Pwm(PTA5);
00012 DebouncedIn Aumen(PTC10);
00013 DebouncedIn Panta(PTC11);
00014 DebouncedIn Decre(PTC6);
00015 DebouncedIn Ensayo(PTC7);
00016 
00017 
00018 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7#include "TextLCD.h"
00019 Rtc_Ds1307 rtc(PTE0,PTE1);
00020 Serial pc(USBTX, USBRX);
00021 
00022 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=2000,Encendido=0,Aumen2=0,Decre2=0,flag2=0;
00023 float ppp=0.001;
00024 float Dd=0.1;
00025 int p=0,c=0,d=0,e=0,flag=0,ff=0,hh=0;
00026 int key;
00027 
00028 char Keytable[] = { '1', '2', '3', 'A',
00029                      '4', '5', '6', 'B',
00030                       '7', '8', '9', 'C',
00031                       '*', '0', '#', 'D'
00032                     };
00033 
00034 uint32_t cbAfterInput(uint32_t Key)
00035 {
00036         
00037         key=Key;
00038         if(Keytable[key]=='A')//Lectura del Reloj.
00039         {
00040             Write=0;
00041             Read=1;
00042         }
00043         if(Keytable[key]=='B')
00044         {
00045             Write=1;
00046             Read=0;
00047             //Read=0;
00048             lcd.cls();
00049             lcd.printf("Configuacion del");
00050             lcd.locate(0,1);
00051             lcd.printf("      Reloj");
00052             wait(1);
00053         }
00054         if(Keytable[key]=='2')
00055         {
00056             Start=1;
00057         }
00058         if(Keytable[key]=='D')
00059         {
00060             Menu=1;
00061         }
00062         if(Keytable[key]=='1')
00063         {
00064             Encendido=1;
00065         }
00066         if(Keytable[key]=='4')
00067         {
00068             Aumen2=1;
00069         }
00070         if(Keytable[key]=='5')
00071         {
00072             Decre2=1;
00073         }
00074         
00075         return 0;
00076 }
00077 
00078 int PWMmodule(float ppp,float Dd)
00079 {
00080         Pwm.period(ppp);
00081         Pwm.write(Dd);
00082         wait(0.1);
00083         Pwm.write(0); 
00084         return 0;
00085 }
00086 int main()
00087 {
00088     lcd.cls();
00089     lcd.printf("Configuracion de");
00090     lcd.locate(0,2);
00091     lcd.printf("   Parametros");
00092     //wait(0.2);
00093     Keypad keypad(PTA2,PTD4,PTD3,PTD1,PTD2,PTD0,PTD5,PTA13);
00094     keypad.CallAfterInput(&cbAfterInput);
00095     keypad.Start();  // energiza las columnas C0-C3 Del Keypad
00096     
00097     Rtc_Ds1307::Time_rtc tm = {};
00098     while(1)
00099     {   
00100         
00101         if(Read==1)
00102         {
00103             //lcd.cls();
00104             //lcd.printf("     Lectura!");
00105             //wait(0.2)
00106             rtc.getTime(tm);
00107             lcd.cls();
00108             lcd.locate(0,1);            // Print and refresh data on line 2 of the LCD display     
00109             lcd.printf("%.2D",tm.hour);
00110             lcd.printf(":%.2D",tm.min);
00111             lcd.printf(":%.2D",tm.sec);
00112             //lcd.printf("%d",tm.hour);
00113         
00114             lcd.locate(0,0);
00115             lcd.printf("%.2D",tm.mon);
00116             lcd.printf("/%.2D",tm.date);
00117             lcd.printf("/%.2D",tm.year);
00118             
00119         }
00120         if(Write==1)
00121         {
00122             //lcd.cls();
00123             //lcd.printf("Ingrese Datos");
00124             if(Panta.falling())
00125             {
00126                 pp=pp+1;
00127                 //lcd.printf("");
00128             }
00129             if(pp==1)
00130             {
00131                 lcd.cls();
00132                 lcd.locate(0,0);
00133                 lcd.printf("Ingrese Hora");
00134             }
00135             if(pp==2)
00136             {
00137                 lcd.cls();
00138                 lcd.locate(0,0);
00139                 lcd.printf("Ingrese Minutos");
00140             }
00141             if(pp==3)
00142             {
00143                 lcd.cls();
00144                 lcd.locate(0,0);
00145                 lcd.printf("Ingrese Segundos");
00146             }
00147             if(pp==4)
00148             {
00149                 lcd.cls();
00150                 lcd.locate(0,0);
00151                 lcd.printf("Ingrese Dia(Sem)");
00152             }
00153             if(pp==5)
00154             {
00155                 lcd.cls();
00156                 lcd.locate(0,0);
00157                 lcd.printf("Ingrese dia");
00158             }
00159              if(pp==6)
00160             {
00161                 lcd.cls();
00162                 lcd.locate(0,0);
00163                 lcd.printf("Ingrese Mes");
00164             }
00165             if(pp==7)
00166             {
00167                 lcd.cls();
00168                 lcd.locate(0,0);
00169                 lcd.printf("Ingrese el Año");
00170             }
00171             if(pp==8)
00172             {
00173                 lcd.cls();
00174                 lcd.locate(0,0);
00175                 lcd.printf("Datos Guardados !");
00176                 wait(2);
00177                 lcd.cls();
00178                 pp=0;
00179             }
00180         }
00181             
00182         if(Aumen.falling())
00183         {
00184             
00185             if(pp==1)
00186             {
00187                 if(Hora<=23)
00188                 {
00189                 Hora=Hora+1;
00190                 lcd.locate(0,1);
00191                 lcd.printf("Hora[0-23]:%d",Hora);
00192                 }
00193                 else
00194                 {
00195                 Hora=0;
00196                 }
00197             }   
00198             if(pp==2)
00199             {
00200                 if(Minuto<=59)
00201                 {
00202                 Minuto=Minuto+1;
00203                 lcd.locate(0,1);
00204                 lcd.printf("Minutos[0-59]:%d",Minuto);
00205                 }
00206                 else
00207                 {
00208                 Minuto=0;
00209                 }
00210             }
00211             if(pp==3)
00212             {
00213                 if(Segundo<=59)
00214                 {
00215                 Segundo=Segundo+1;
00216                 lcd.locate(0,1);
00217                 lcd.printf("Seg[0-59]:%d",Segundo);
00218                 }
00219                 else
00220                 {
00221                 Segundo=0;
00222                 }
00223             }
00224             if(pp==4)
00225             {
00226                 if(Dia<=7)
00227                 {
00228                 Dia=Dia+1;
00229                 lcd.locate(0,1);
00230                 lcd.printf("Dia[1-7]:%d",Dia);
00231                 }
00232                 else
00233                 {
00234                 Dia=0;
00235                 }
00236             }
00237             if(pp==5)
00238             { //se toco por chimbiarlo , sera??, que gueva
00239                 if(Dya<=31)
00240                 {
00241                 Dya=Dya+1;
00242                 lcd.locate(0,1);
00243                 lcd.printf("Dia:%d",Dya);
00244                 }
00245                 else
00246                 {
00247                 Dya=0;
00248                 }
00249             }
00250             if(pp==6)
00251             {
00252                 if(Mes<=12)
00253                 {
00254                 Mes=Mes+1;
00255                 lcd.locate(0,1);
00256                 lcd.printf("Mes:%d",Mes);
00257                 }
00258                 else
00259                 {
00260                 Mes=0;
00261                 }
00262             }
00263             if(pp==7)
00264             {
00265                 Anno=Anno+1;
00266                 lcd.locate(0,1);
00267                 lcd.printf("Ano:%d",Anno);
00268             }
00269             
00270         }
00271         if(Decre.falling())
00272         {
00273             
00274             if(pp==1)
00275             {
00276                 if(Hora>0)
00277                 {
00278                 Hora=Hora-1;
00279                 lcd.locate(0,1);
00280                 lcd.printf("Hora[0-23]:%d",Hora);
00281                 }
00282             }   
00283             if(pp==2)
00284             {
00285                 if(Minuto>0)
00286                 {
00287                 Minuto=Minuto-1;
00288                 lcd.locate(0,1);
00289                 lcd.printf("Min[0-59]:%d",Minuto);
00290                 }
00291             }
00292             if(pp==3)
00293             {
00294                 if(Segundo>0)
00295                 {
00296                 Segundo=Segundo-1;
00297                 lcd.locate(0,1);
00298                 lcd.printf("Seg[0-59]:%d",Segundo);
00299                 }
00300             }
00301             if(pp==4)
00302             {
00303                 if(Dia>0)
00304                 {
00305                 Dia=Dia-1;
00306                 lcd.locate(0,1);
00307                 lcd.printf("Dia[1-7]:%d",Dia);
00308                 }
00309             }
00310             if(pp==5)
00311             {
00312                 if(Dya>0)
00313                 {
00314                 Dya=Dya-1;
00315                 lcd.locate(0,1);
00316                 lcd.printf("Dia:%d",Dya);
00317                 }
00318             }
00319             if(pp==6)
00320             {
00321                 if(Mes>0)
00322                 {
00323                 Mes=Mes-1;
00324                 lcd.locate(0,1);
00325                 lcd.printf("Mes:%d",Mes);
00326                 }
00327             }
00328             if(pp==7)
00329             {
00330                 if(Anno>0)
00331                 {
00332                 Anno=Anno-1;
00333                 lcd.locate(0,1);
00334                 lcd.printf("Ano:%d",Anno);
00335                 }
00336             }
00337             
00338         }
00339         if(Start==1)
00340         { 
00341             Write=0;
00342             Read=0;
00343             tm.mon=Mes;
00344             tm.year=Anno;
00345             tm.hour=Hora;
00346             tm.min=Minuto;
00347             tm.sec=Segundo;
00348             tm.date=Dya;
00349             rtc.setTime(tm, false, false);
00350             wait(0.3);
00351             Start=0;
00352             
00353         }
00354         if(Encendido==1)
00355         {
00356             
00357             rtc.startClock();
00358             wait(0.2);
00359             flag2=1;
00360             Encendido=0;
00361         }
00362         
00363         if(flag2==1)
00364         {
00365             rtc.getTime(tm);
00366             if(Panta.falling())
00367             {      
00368                 p=p+1;
00369                 //flag=1;
00370                 if(p==1)
00371                 {
00372                     lcd.cls();
00373                     lcd.printf("Ingrese la Hora");               
00374                 }
00375                 if(p==2)
00376                 {
00377                     lcd.cls();
00378                     lcd.printf("Ingrese Minutos");   
00379                 }
00380                 if(p==3)
00381                 {
00382                     lcd.cls();
00383                     lcd.printf("Ingrese Dia(1-7)");
00384                 }
00385                 if(p==4)
00386                 {
00387                     lcd.cls();
00388                     lcd.printf("Guardados !");
00389                     wait(1);
00390                     p=0;
00391                 }
00392             }
00393             if(Aumen2==1)
00394             {
00395                 if(p==1)
00396                 {
00397                     if(c<=24)
00398                     {
00399                         lcd.cls();
00400                         c=c+1;
00401                         lcd.locate(0,0);
00402                         lcd.printf("Ingrese la Hora");
00403                         lcd.locate(0,1);
00404                         lcd.printf("Hora: %d",c);
00405                     }
00406                     else
00407                     {
00408                         c=0;
00409                     }
00410                 }
00411                 if(p==2)
00412                 {
00413                     if(d<=60)
00414                     {
00415                         lcd.cls();
00416                         d=d+1;
00417                         lcd.locate(0,0);
00418                         lcd.printf("Ingrese Minutos");
00419                         lcd.locate(0,1);
00420                         lcd.printf("Minutos: %d",d);
00421                     }
00422                     else
00423                     {
00424                         d=0;
00425                     }
00426                 }    
00427                 if(p==3)
00428                 {
00429                    if(e<=7)
00430                     {
00431                         lcd.cls();
00432                         e=e+1;
00433                         lcd.locate(0,0);
00434                         lcd.printf("Ingrese Dia(1-7)");
00435                         lcd.locate(0,1);
00436                         lcd.printf("Dia: %d",e);    
00437                     }
00438                     else
00439                     {
00440                         e=0;    
00441                     } 
00442                 }  
00443                 wait(0.1);
00444                 Aumen2=0;
00445             }  
00446             
00447              if(Decre2==1)
00448             {
00449                 if(p==1)
00450                 {
00451                     if(c>0)
00452                     {
00453                         lcd.cls();
00454                         c=c-1;    
00455                         lcd.locate(0,0);
00456                         lcd.printf("Ingrese la Hora");
00457                         lcd.locate(0,1);
00458                         lcd.printf("Hora: %d",c);
00459                     }
00460                     else
00461                     {
00462                         c=0;
00463                     }
00464                 }
00465                 if(p==2)
00466                 {   
00467                     if(d>0)
00468                     {
00469                         lcd.cls();
00470                         d=d-1;    
00471                         lcd.locate(0,0);
00472                         lcd.printf("Ingrese Minutos");
00473                         lcd.locate(0,1);
00474                         lcd.printf("Minutos: %d",d);
00475                     }
00476                     else
00477                     {
00478                         d=0;
00479                     }                        
00480                 }
00481                 if(p==3)
00482                 {
00483                     if(e>0)
00484                     {
00485                         lcd.cls();
00486                         e=e-1;    
00487                         lcd.locate(0,0);
00488                         lcd.printf("Ingrese Dia(1-7)");
00489                         lcd.locate(0,1);
00490                         lcd.printf("Dia: %d",e);
00491                     }
00492                     else
00493                     {
00494                         e=0;
00495                     }      
00496                 }
00497                 wait(0.1);
00498                 Decre2=0;
00499                 
00500             }
00501             if((p==0))
00502             {
00503                 lcd.cls();
00504                 lcd.locate(0,1);            // Print and refresh data on line 2 of the LCD display     
00505                 lcd.printf("%.2D",tm.hour);
00506                 lcd.printf(":%.2D",tm.min);
00507                 lcd.printf(":%.2D",tm.sec);
00508                 lcd.locate(0,0);
00509                 lcd.printf("%.2D",tm.mon);
00510                 lcd.printf("/%.2D",tm.date);
00511                 lcd.printf("/%.2D",tm.year);
00512         
00513                 if (tm.wday == 6){
00514                     lcd.printf("   Sun\n");}
00515                 if (tm.wday == 7){
00516                     lcd.printf("   Mon\n");}   
00517                 if (tm.wday == 1){
00518                     lcd.printf("  Tues\n");}
00519                 if (tm.wday == 2){
00520                     lcd.printf("   Wed\n");}
00521                 if (tm.wday == 3){
00522                     lcd.printf("  Thur\n");}
00523                 if (tm.wday == 4){
00524                     lcd.printf("   Fri\n");}
00525                 if (tm.wday == 5){
00526                     lcd.printf("   Sat\n");}
00527             }
00528         }
00529     }      
00530 }
00531 
00532     
00533