![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a
Dependencies: QEI RTC-DS1307 TextLCD mbed
main.cpp
- Committer:
- Hedizxom
- Date:
- 2018-05-05
- Revision:
- 0:a800d044c724
File content as of revision 0:a800d044c724:
#include "mbed.h" #include "Rtc_Ds1307.h" #include "TextLCD.h" #include "QEI.h" TextLCD lcd(PTD5, PTD7, PTD6, PTD4, PTD2, PTC9); // rs, e, d4-d7 Rtc_Ds1307 rtc(PTE0, PTE1);//Dato,Reloj QEI encoder (PTC0, PTC4, NC, 624); DigitalIn chan(PTD3);//btn DigitalIn rlo(PTC3); DigitalIn rl(PTC12); DigitalOut ledr(PTE29); DigitalOut buzz(PTA6); char buffer[128]; int readptr = 0,segundos =0,cambio=0, diferencia=0,cont=0,pla=0,pla2=0,key=0; int di=0,me=0,an=0,fle=0,mi=0,se=0; long int jod=0; int main() { Rtc_Ds1307::Time_rtc tm = {}; ledr=1; while(1){ sk: if(pla==1) { buzz=0; ledr=1; jod=0; key=0; while(rlo==1){} lcd.cls(); while(cont==0) { rtc.stopClock(); lcd.locate(0,0); lcd.printf("(Day 1..31)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=1){cambio=1;} if(cambio>=31){cambio=31;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=1;} } tm.date=cambio; cambio=0;diferencia=0; while(cont==1) { lcd.locate(0,0); lcd.printf("(month 1..12)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=1){cambio=1;} if(cambio>=12){cambio=12;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=2;} } tm.mon=cambio; cambio=0;diferencia=0; while(cont==2) { lcd.locate(0,0); lcd.printf("(year 0-99)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=99){cambio=99;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=3;} } tm.year=cambio+2000; cambio=0;diferencia=0; while(cont==3) { lcd.locate(0,0); lcd.printf("(hours 0..23)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=23){cambio=23;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=4;cambio=cambio;} } tm.hour=cambio; cambio=0;diferencia=0; while(cont==4) { lcd.locate(0,0); lcd.printf("(minutes 0..59)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=59){cambio=59;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=5;} } tm.min=cambio; cambio=0;diferencia=0; while(cont==5) { lcd.locate(0,0); lcd.printf("(seconds 0..59)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=59){cambio=59;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=6;lcd.locate(0,0);lcd.printf("( ");} } tm.sec=cambio; cambio=1;diferencia=1; while(cont==6) { lcd.locate(0,0); lcd.printf("(sunday=1)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=1){cambio=1;} if(cambio>=7){cambio=7;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=7;} } tm.wday=cambio; cambio=0;diferencia=0; rtc.setTime(tm, false, false); rtc.startClock(); pla=0; } cont=0; sk2: if(pla2==1) { buzz=0; ledr=1; jod=0; key=0; while(rl==1){} lcd.cls(); while(cont==0) { lcd.locate(0,0); lcd.printf("alm(Day 1..31)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=1){cambio=1;} if(cambio>=31){cambio=31;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=1;} } di=cambio; cambio=0;diferencia=0; while(cont==1) { lcd.locate(0,0); lcd.printf("alm(month 1..12)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=1){cambio=1;} if(cambio>=12){cambio=12;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=2;} } me=cambio; cambio=0;diferencia=0; while(cont==2) { lcd.locate(0,0); lcd.printf("alm(year 0..99)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=99){cambio=99;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=3;} } an=cambio+2000; cambio=0;diferencia=0; while(cont==3) { lcd.locate(0,0); lcd.printf("alm(hours 0..23)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=23){cambio=23;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=4;} } fle=cambio; cambio=0;diferencia=0; while(cont==4) { lcd.locate(0,0); lcd.printf("alm(minutes 0..59)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=59){cambio=59;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=5;} } mi=cambio; cambio=0;diferencia=0; while(cont==5) { lcd.locate(0,0); lcd.printf("alm(seconds 0..59)"); diferencia=encoder.getPulses()-cambio; cambio=encoder.getPulses(); if(cambio<=0){cambio=0;} if(cambio>=59){cambio=59;} lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("%d",cambio); while(chan==0){encoder.reset();cont=6;lcd.locate(0,0);lcd.printf("( ");} } se=cambio; cambio=0;diferencia=0; pla2=0; } cont=0; cicl: if (rtc.getTime(tm) ) { //pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); //pc.printf("The current date is : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year); if(rlo==0){pla=1;goto sk;} if(rl==0){pla2=1;goto sk2;} lcd.cls(); lcd.locate(0,0); lcd.printf("%02d:%02d:%02d", tm.hour, tm.min, tm.sec); lcd.locate(0,1); lcd.printf("%s/%02d/%02d/%4d", rtc.weekdayToString(tm.wday), tm.date, tm.mon, tm.year); if((tm.date==di)&&(tm.mon==me)&&(tm.year==an)&&(tm.hour==fle)&&(tm.min==mi)&&(tm.sec==se)){key=1;} while(key==1) { jod++; ledr=0;buzz=1; wait(0.5); ledr=1;buzz=0; wait(0.5); if(chan!=1){key=0;jod=0;goto cicl;} if(jod==7){key=0;mi=mi+1;if(mi==60){mi=0;fle=fle+1;if(fle==24){fle=0;di=di+1;if(di==31){di=1;me=me+1;if(me==12){me=1;an=an+1;}}}}jod=0; } } wait(0.2); goto cicl; } } }