Ejemplo RTC
Dependencies: Debounced FPointer RTC-DS1307 TextLCD keypad mbed
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
Generated on Sat Jul 16 2022 20:11:14 by 1.7.2