Ejemplo RTC

Dependencies:   Debounced FPointer RTC-DS1307 TextLCD keypad mbed

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);            
00109             lcd.printf("%.2D",tm.hour);
00110             lcd.printf(":%.2D",tm.min);
00111             lcd.printf(":%.2D",tm.sec);
00112             lcd.locate(0,0);
00113             lcd.printf("%.2D",tm.mon);
00114             lcd.printf("/%.2D",tm.date);
00115             lcd.printf("/%.2D",tm.year);
00116             
00117         }
00118         if(Write==1)
00119         {
00120             lcd.cls();
00121             lcd.printf("   Escritura");
00122             if(Panta.falling())
00123             {
00124                 pp=pp+1;
00125             }
00126             if(pp==1)
00127             {
00128                 lcd.cls();
00129                 lcd.locate(0,0);
00130                 lcd.printf("Ingrese Hora");
00131             }
00132             if(pp==2)
00133             {
00134                 lcd.cls();
00135                 lcd.locate(0,0);
00136                 lcd.printf("Ingrese Minutos");
00137             }
00138             if(pp==3)
00139             {
00140                 lcd.cls();
00141                 lcd.locate(0,0);
00142                 lcd.printf("Ingrese Segundos");
00143             }
00144             if(pp==4)
00145             {
00146                 lcd.cls();
00147                 lcd.locate(0,0);
00148                 lcd.printf("Ingrese Dia(Sem)");
00149             }
00150             if(pp==5)
00151             {
00152                 lcd.cls();
00153                 lcd.locate(0,0);
00154                 lcd.printf("Ingrese dia");
00155             }
00156              if(pp==6)
00157             {
00158                 lcd.cls();
00159                 lcd.locate(0,0);
00160                 lcd.printf("Ingrese Mes");
00161             }
00162             if(pp==7)
00163             {
00164                 lcd.cls();
00165                 lcd.locate(0,0);
00166                 lcd.printf("Ingrese el Año");
00167             }
00168             if(pp==8)
00169             {
00170                 lcd.cls();
00171                 lcd.locate(0,0);
00172                 lcd.printf("Datos Guardados !");
00173                 wait(2);
00174                 lcd.cls();
00175                 pp=0;
00176             }
00177         }
00178             
00179         if(Aumen.falling())
00180         {
00181             
00182             if(pp==1)
00183             {
00184                 if(Hora<=23)
00185                 {
00186                 Hora=Hora+1;
00187                 lcd.locate(0,1);
00188                 lcd.printf("Hora[0-23]:%d",Hora);
00189                 }
00190                 else
00191                 {
00192                 Hora=0;
00193                 }
00194             }   
00195             if(pp==2)
00196             {
00197                 if(Minuto<=59)
00198                 {
00199                 Minuto=Minuto+1;
00200                 lcd.locate(0,1);
00201                 lcd.printf("Minutos[0-59]:%d",Minuto);
00202                 }
00203                 else
00204                 {
00205                 Minuto=0;
00206                 }
00207             }
00208             if(pp==3)
00209             {
00210                 if(Segundo<=59)
00211                 {
00212                 Segundo=Segundo+1;
00213                 lcd.locate(0,1);
00214                 lcd.printf("Seg[0-59]:%d",Segundo);
00215                 }
00216                 else
00217                 {
00218                 Segundo=0;
00219                 }
00220             }
00221             if(pp==4)
00222             {
00223                 if(Dia<=7)
00224                 {
00225                 Dia=Dia+1;
00226                 lcd.locate(0,1);
00227                 lcd.printf("Dia[1-7]:%d",Dia);
00228                 }
00229                 else
00230                 {
00231                 Dia=0;
00232                 }
00233             }
00234             if(pp==5)
00235             { //se toco por chimbiarlo , sera??, que gueva
00236                 if(Dya<=31)
00237                 {
00238                 Dya=Dya+1;
00239                 lcd.locate(0,1);
00240                 lcd.printf("Dia:%d",Dya);
00241                 }
00242                 else
00243                 {
00244                 Dya=0;
00245                 }
00246             }
00247             if(pp==6)
00248             {
00249                 if(Mes<=12)
00250                 {
00251                 Mes=Mes+1;
00252                 lcd.locate(0,1);
00253                 lcd.printf("Mes:%d",Mes);
00254                 }
00255                 else
00256                 {
00257                 Mes=0;
00258                 }
00259             }
00260             if(pp==7)
00261             {
00262                 Anno=Anno+1;
00263                 lcd.locate(0,1);
00264                 lcd.printf("Ano:%d",Anno);
00265             }
00266             
00267         }
00268         if(Decre.falling())
00269         {
00270             
00271             if(pp==1)
00272             {
00273                 if(Hora>0)
00274                 {
00275                 Hora=Hora-1;
00276                 lcd.locate(0,1);
00277                 lcd.printf("Hora[0-23]:%d",Hora);
00278                 }
00279             }   
00280             if(pp==2)
00281             {
00282                 if(Minuto>0)
00283                 {
00284                 Minuto=Minuto-1;
00285                 lcd.locate(0,1);
00286                 lcd.printf("Min[0-59]:%d",Minuto);
00287                 }
00288             }
00289             if(pp==3)
00290             {
00291                 if(Segundo>0)
00292                 {
00293                 Segundo=Segundo-1;
00294                 lcd.locate(0,1);
00295                 lcd.printf("Seg[0-59]:%d",Segundo);
00296                 }
00297             }
00298             if(pp==4)
00299             {
00300                 if(Dia>0)
00301                 {
00302                 Dia=Dia-1;
00303                 lcd.locate(0,1);
00304                 lcd.printf("Dia[1-7]:%d",Dia);
00305                 }
00306             }
00307             if(pp==5)
00308             {
00309                 if(Dya>0)
00310                 {
00311                 Dya=Dya-1;
00312                 lcd.locate(0,1);
00313                 lcd.printf("Dia:%d",Dya);
00314                 }
00315             }
00316             if(pp==6)
00317             {
00318                 if(Mes>0)
00319                 {
00320                 Mes=Mes-1;
00321                 lcd.locate(0,1);
00322                 lcd.printf("Mes:%d",Mes);
00323                 }
00324             }
00325             if(pp==7)
00326             {
00327                 if(Anno>0)
00328                 {
00329                 Anno=Anno-1;
00330                 lcd.locate(0,1);
00331                 lcd.printf("Ano:%d",Anno);
00332                 }
00333             }
00334             
00335         }
00336         if(Start==1)
00337         { 
00338             Write=0;
00339             Read=0;
00340             tm.mon=Mes;
00341             tm.year=Anno;
00342             tm.hour=Hora;
00343             tm.min=Minuto;
00344             tm.sec=Segundo;
00345             tm.date=Dya;
00346             rtc.setTime(tm, false, false);
00347             wait(0.3);
00348             Start=0;
00349             
00350         }
00351         if(Encendido==1)
00352         {
00353             
00354             rtc.startClock();
00355             wait(0.2);
00356             flag2=1;
00357             Encendido=0;
00358         }
00359         
00360         if(flag2==1)
00361         {
00362             rtc.getTime(tm);
00363             if(Panta.falling())
00364             {      
00365                 p=p+1;
00366                 //flag=1;
00367                 if(p==1)
00368                 {
00369                     lcd.cls();
00370                     lcd.printf("Ingrese la Hora");               
00371                 }
00372                 if(p==2)
00373                 {
00374                     lcd.cls();
00375                     lcd.printf("Ingrese Minutos");   
00376                 }
00377                 if(p==3)
00378                 {
00379                     lcd.cls();
00380                     lcd.printf("Ingrese Dia(1-7)");
00381                 }
00382                 if(p==4)
00383                 {
00384                     lcd.cls();
00385                     lcd.printf("Guardados !");
00386                     wait(1);
00387                     p=0;
00388                 }
00389             }
00390             if(Aumen2==1)
00391             {
00392                 if(p==1)
00393                 {
00394                     if(c<=24)
00395                     {
00396                         lcd.cls();
00397                         c=c+1;
00398                         lcd.locate(0,0);
00399                         lcd.printf("Ingrese la Hora");
00400                         lcd.locate(0,1);
00401                         lcd.printf("Hora: %d",c);
00402                     }
00403                     else
00404                     {
00405                         c=0;
00406                     }
00407                 }
00408                 if(p==2)
00409                 {
00410                     if(d<=60)
00411                     {
00412                         lcd.cls();
00413                         d=d+1;
00414                         lcd.locate(0,0);
00415                         lcd.printf("Ingrese Minutos");
00416                         lcd.locate(0,1);
00417                         lcd.printf("Minutos: %d",d);
00418                     }
00419                     else
00420                     {
00421                         d=0;
00422                     }
00423                 }    
00424                 if(p==3)
00425                 {
00426                    if(e<=7)
00427                     {
00428                         lcd.cls();
00429                         e=e+1;
00430                         lcd.locate(0,0);
00431                         lcd.printf("Ingrese Dia(1-7)");
00432                         lcd.locate(0,1);
00433                         lcd.printf("Dia: %d",e);    
00434                     }
00435                     else
00436                     {
00437                         e=0;    
00438                     } 
00439                 }  
00440                 wait(0.1);
00441                 Aumen2=0;
00442             }  
00443             
00444              if(Decre2==1)
00445             {
00446                 if(p==1)
00447                 {
00448                     if(c>0)
00449                     {
00450                         lcd.cls();
00451                         c=c-1;    
00452                         lcd.locate(0,0);
00453                         lcd.printf("Ingrese la Hora");
00454                         lcd.locate(0,1);
00455                         lcd.printf("Hora: %d",c);
00456                     }
00457                     else
00458                     {
00459                         c=0;
00460                     }
00461                 }
00462                 if(p==2)
00463                 {   
00464                     if(d>0)
00465                     {
00466                         lcd.cls();
00467                         d=d-1;    
00468                         lcd.locate(0,0);
00469                         lcd.printf("Ingrese Minutos");
00470                         lcd.locate(0,1);
00471                         lcd.printf("Minutos: %d",d);
00472                     }
00473                     else
00474                     {
00475                         d=0;
00476                     }                        
00477                 }
00478                 if(p==3)
00479                 {
00480                     if(e>0)
00481                     {
00482                         lcd.cls();
00483                         e=e-1;    
00484                         lcd.locate(0,0);
00485                         lcd.printf("Ingrese Dia(1-7)");
00486                         lcd.locate(0,1);
00487                         lcd.printf("Dia: %d",e);
00488                     }
00489                     else
00490                     {
00491                         e=0;
00492                     }      
00493                 }
00494                 wait(0.1);
00495                 Decre2=0;
00496                 
00497             }
00498             if((p==0))
00499             {
00500                 lcd.cls();
00501                 lcd.locate(0,1);            // Print and refresh data on line 2 of the LCD display     
00502                 lcd.printf("%.2D",tm.hour);
00503                 lcd.printf(":%.2D",tm.min);
00504                 lcd.printf(":%.2D",tm.sec);
00505                 lcd.locate(0,0);
00506                 lcd.printf("%.2D",tm.mon);
00507                 lcd.printf("/%.2D",tm.date);
00508                 lcd.printf("/%.2D",tm.year);
00509         
00510                 if (tm.wday == 6){
00511                     lcd.printf("   Sun\n");}
00512                 if (tm.wday == 7){
00513                     lcd.printf("   Mon\n");}   
00514                 if (tm.wday == 1){
00515                     lcd.printf("  Tues\n");}
00516                 if (tm.wday == 2){
00517                     lcd.printf("   Wed\n");}
00518                 if (tm.wday == 3){
00519                     lcd.printf("  Thur\n");}
00520                 if (tm.wday == 4){
00521                     lcd.printf("   Fri\n");}
00522                 if (tm.wday == 5){
00523                     lcd.printf("   Sat\n");}
00524             }
00525         }
00526     }      
00527 }
00528 
00529     
00530