Ejemplo RTC
Dependencies: Debounced FPointer RTC-DS1307 TextLCD keypad mbed
Fork of IngresoHORA by
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
Generated on Sun Jul 17 2022 01:37:48 by 1.7.2