a

Dependencies:   QEI RTC-DS1307 TextLCD mbed

Committer:
Hedizxom
Date:
Sat May 05 05:28:26 2018 +0000
Revision:
1:cce4b697494d
Parent:
0:a800d044c724
asd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hedizxom 0:a800d044c724 1 #include "mbed.h"
Hedizxom 0:a800d044c724 2 #include "Rtc_Ds1307.h"
Hedizxom 0:a800d044c724 3 #include "TextLCD.h"
Hedizxom 0:a800d044c724 4 #include "QEI.h"
Hedizxom 0:a800d044c724 5
Hedizxom 0:a800d044c724 6 TextLCD lcd(PTD5, PTD7, PTD6, PTD4, PTD2, PTC9); // rs, e, d4-d7
Hedizxom 0:a800d044c724 7 Rtc_Ds1307 rtc(PTE0, PTE1);//Dato,Reloj
Hedizxom 0:a800d044c724 8 QEI encoder (PTC0, PTC4, NC, 624);
Hedizxom 0:a800d044c724 9 DigitalIn chan(PTD3);//btn
Hedizxom 0:a800d044c724 10 DigitalIn rlo(PTC3);
Hedizxom 0:a800d044c724 11 DigitalIn rl(PTC12);
Hedizxom 0:a800d044c724 12 DigitalOut ledr(PTE29);
Hedizxom 0:a800d044c724 13 DigitalOut buzz(PTA6);
Hedizxom 0:a800d044c724 14 char buffer[128];
Hedizxom 0:a800d044c724 15 int readptr = 0,segundos =0,cambio=0, diferencia=0,cont=0,pla=0,pla2=0,key=0;
Hedizxom 0:a800d044c724 16 int di=0,me=0,an=0,fle=0,mi=0,se=0;
Hedizxom 0:a800d044c724 17 long int jod=0;
Hedizxom 0:a800d044c724 18 int main()
Hedizxom 0:a800d044c724 19 {
Hedizxom 0:a800d044c724 20 Rtc_Ds1307::Time_rtc tm = {};
Hedizxom 0:a800d044c724 21 ledr=1;
Hedizxom 0:a800d044c724 22 while(1){
Hedizxom 0:a800d044c724 23 sk: if(pla==1)
Hedizxom 0:a800d044c724 24 {
Hedizxom 0:a800d044c724 25 buzz=0;
Hedizxom 0:a800d044c724 26 ledr=1;
Hedizxom 0:a800d044c724 27 jod=0;
Hedizxom 0:a800d044c724 28 key=0;
Hedizxom 0:a800d044c724 29 while(rlo==1){}
Hedizxom 0:a800d044c724 30 lcd.cls();
Hedizxom 0:a800d044c724 31 while(cont==0)
Hedizxom 0:a800d044c724 32 {
Hedizxom 0:a800d044c724 33 rtc.stopClock();
Hedizxom 0:a800d044c724 34 lcd.locate(0,0);
Hedizxom 0:a800d044c724 35 lcd.printf("(Day 1..31)");
Hedizxom 0:a800d044c724 36 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 37 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 38 if(cambio<=1){cambio=1;}
Hedizxom 0:a800d044c724 39 if(cambio>=31){cambio=31;}
Hedizxom 0:a800d044c724 40 lcd.locate(0,1);
Hedizxom 0:a800d044c724 41 lcd.printf(" ");
Hedizxom 0:a800d044c724 42 lcd.locate(0,1);
Hedizxom 0:a800d044c724 43 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 44 while(chan==0){encoder.reset();cont=1;}
Hedizxom 0:a800d044c724 45 }
Hedizxom 0:a800d044c724 46 tm.date=cambio;
Hedizxom 0:a800d044c724 47 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 48 while(cont==1)
Hedizxom 0:a800d044c724 49 {
Hedizxom 0:a800d044c724 50 lcd.locate(0,0);
Hedizxom 0:a800d044c724 51 lcd.printf("(month 1..12)");
Hedizxom 0:a800d044c724 52 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 53 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 54 if(cambio<=1){cambio=1;}
Hedizxom 0:a800d044c724 55 if(cambio>=12){cambio=12;}
Hedizxom 0:a800d044c724 56 lcd.locate(0,1);
Hedizxom 0:a800d044c724 57 lcd.printf(" ");
Hedizxom 0:a800d044c724 58 lcd.locate(0,1);
Hedizxom 0:a800d044c724 59 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 60 while(chan==0){encoder.reset();cont=2;}
Hedizxom 0:a800d044c724 61 }
Hedizxom 0:a800d044c724 62 tm.mon=cambio;
Hedizxom 0:a800d044c724 63 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 64 while(cont==2)
Hedizxom 0:a800d044c724 65 {
Hedizxom 0:a800d044c724 66 lcd.locate(0,0);
Hedizxom 0:a800d044c724 67 lcd.printf("(year 0-99)");
Hedizxom 0:a800d044c724 68 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 69 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 70 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 71 if(cambio>=99){cambio=99;}
Hedizxom 0:a800d044c724 72 lcd.locate(0,1);
Hedizxom 0:a800d044c724 73 lcd.printf(" ");
Hedizxom 0:a800d044c724 74 lcd.locate(0,1);
Hedizxom 0:a800d044c724 75 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 76 while(chan==0){encoder.reset();cont=3;}
Hedizxom 0:a800d044c724 77 }
Hedizxom 0:a800d044c724 78 tm.year=cambio+2000;
Hedizxom 0:a800d044c724 79 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 80 while(cont==3)
Hedizxom 0:a800d044c724 81 {
Hedizxom 0:a800d044c724 82 lcd.locate(0,0);
Hedizxom 0:a800d044c724 83 lcd.printf("(hours 0..23)");
Hedizxom 0:a800d044c724 84 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 85 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 86 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 87 if(cambio>=23){cambio=23;}
Hedizxom 0:a800d044c724 88 lcd.locate(0,1);
Hedizxom 0:a800d044c724 89 lcd.printf(" ");
Hedizxom 0:a800d044c724 90 lcd.locate(0,1);
Hedizxom 0:a800d044c724 91 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 92 while(chan==0){encoder.reset();cont=4;cambio=cambio;}
Hedizxom 0:a800d044c724 93 }
Hedizxom 0:a800d044c724 94 tm.hour=cambio;
Hedizxom 0:a800d044c724 95 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 96 while(cont==4)
Hedizxom 0:a800d044c724 97 {
Hedizxom 0:a800d044c724 98 lcd.locate(0,0);
Hedizxom 0:a800d044c724 99 lcd.printf("(minutes 0..59)");
Hedizxom 0:a800d044c724 100 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 101 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 102 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 103 if(cambio>=59){cambio=59;}
Hedizxom 0:a800d044c724 104 lcd.locate(0,1);
Hedizxom 0:a800d044c724 105 lcd.printf(" ");
Hedizxom 0:a800d044c724 106 lcd.locate(0,1);
Hedizxom 0:a800d044c724 107 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 108 while(chan==0){encoder.reset();cont=5;}
Hedizxom 0:a800d044c724 109 }
Hedizxom 0:a800d044c724 110 tm.min=cambio;
Hedizxom 0:a800d044c724 111 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 112 while(cont==5)
Hedizxom 0:a800d044c724 113 {
Hedizxom 0:a800d044c724 114 lcd.locate(0,0);
Hedizxom 0:a800d044c724 115 lcd.printf("(seconds 0..59)");
Hedizxom 0:a800d044c724 116 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 117 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 118 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 119 if(cambio>=59){cambio=59;}
Hedizxom 0:a800d044c724 120 lcd.locate(0,1);
Hedizxom 0:a800d044c724 121 lcd.printf(" ");
Hedizxom 0:a800d044c724 122 lcd.locate(0,1);
Hedizxom 0:a800d044c724 123 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 124 while(chan==0){encoder.reset();cont=6;lcd.locate(0,0);lcd.printf("( ");}
Hedizxom 0:a800d044c724 125 }
Hedizxom 0:a800d044c724 126 tm.sec=cambio;
Hedizxom 0:a800d044c724 127 cambio=1;diferencia=1;
Hedizxom 0:a800d044c724 128 while(cont==6)
Hedizxom 0:a800d044c724 129 {
Hedizxom 0:a800d044c724 130 lcd.locate(0,0);
Hedizxom 0:a800d044c724 131 lcd.printf("(sunday=1)");
Hedizxom 0:a800d044c724 132 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 133 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 134 if(cambio<=1){cambio=1;}
Hedizxom 0:a800d044c724 135 if(cambio>=7){cambio=7;}
Hedizxom 0:a800d044c724 136 lcd.locate(0,1);
Hedizxom 0:a800d044c724 137 lcd.printf(" ");
Hedizxom 0:a800d044c724 138 lcd.locate(0,1);
Hedizxom 0:a800d044c724 139 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 140 while(chan==0){encoder.reset();cont=7;}
Hedizxom 0:a800d044c724 141 }
Hedizxom 0:a800d044c724 142 tm.wday=cambio;
Hedizxom 0:a800d044c724 143 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 144 rtc.setTime(tm, false, false);
Hedizxom 0:a800d044c724 145 rtc.startClock();
Hedizxom 0:a800d044c724 146 pla=0;
Hedizxom 0:a800d044c724 147 }
Hedizxom 0:a800d044c724 148 cont=0;
Hedizxom 0:a800d044c724 149
Hedizxom 0:a800d044c724 150 sk2: if(pla2==1)
Hedizxom 0:a800d044c724 151 {
Hedizxom 0:a800d044c724 152 buzz=0;
Hedizxom 0:a800d044c724 153 ledr=1;
Hedizxom 0:a800d044c724 154 jod=0;
Hedizxom 0:a800d044c724 155 key=0;
Hedizxom 0:a800d044c724 156 while(rl==1){}
Hedizxom 0:a800d044c724 157 lcd.cls();
Hedizxom 0:a800d044c724 158 while(cont==0)
Hedizxom 0:a800d044c724 159 {
Hedizxom 0:a800d044c724 160 lcd.locate(0,0);
Hedizxom 0:a800d044c724 161 lcd.printf("alm(Day 1..31)");
Hedizxom 0:a800d044c724 162 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 163 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 164 if(cambio<=1){cambio=1;}
Hedizxom 0:a800d044c724 165 if(cambio>=31){cambio=31;}
Hedizxom 0:a800d044c724 166 lcd.locate(0,1);
Hedizxom 0:a800d044c724 167 lcd.printf(" ");
Hedizxom 0:a800d044c724 168 lcd.locate(0,1);
Hedizxom 0:a800d044c724 169 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 170 while(chan==0){encoder.reset();cont=1;}
Hedizxom 0:a800d044c724 171 }
Hedizxom 0:a800d044c724 172 di=cambio;
Hedizxom 0:a800d044c724 173 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 174 while(cont==1)
Hedizxom 0:a800d044c724 175 {
Hedizxom 0:a800d044c724 176 lcd.locate(0,0);
Hedizxom 0:a800d044c724 177 lcd.printf("alm(month 1..12)");
Hedizxom 0:a800d044c724 178 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 179 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 180 if(cambio<=1){cambio=1;}
Hedizxom 0:a800d044c724 181 if(cambio>=12){cambio=12;}
Hedizxom 0:a800d044c724 182 lcd.locate(0,1);
Hedizxom 0:a800d044c724 183 lcd.printf(" ");
Hedizxom 0:a800d044c724 184 lcd.locate(0,1);
Hedizxom 0:a800d044c724 185 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 186 while(chan==0){encoder.reset();cont=2;}
Hedizxom 0:a800d044c724 187 }
Hedizxom 0:a800d044c724 188 me=cambio;
Hedizxom 0:a800d044c724 189 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 190 while(cont==2)
Hedizxom 0:a800d044c724 191 {
Hedizxom 0:a800d044c724 192 lcd.locate(0,0);
Hedizxom 0:a800d044c724 193 lcd.printf("alm(year 0..99)");
Hedizxom 0:a800d044c724 194 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 195 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 196 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 197 if(cambio>=99){cambio=99;}
Hedizxom 0:a800d044c724 198 lcd.locate(0,1);
Hedizxom 0:a800d044c724 199 lcd.printf(" ");
Hedizxom 0:a800d044c724 200 lcd.locate(0,1);
Hedizxom 0:a800d044c724 201 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 202 while(chan==0){encoder.reset();cont=3;}
Hedizxom 0:a800d044c724 203 }
Hedizxom 0:a800d044c724 204 an=cambio+2000;
Hedizxom 0:a800d044c724 205 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 206 while(cont==3)
Hedizxom 0:a800d044c724 207 {
Hedizxom 0:a800d044c724 208 lcd.locate(0,0);
Hedizxom 0:a800d044c724 209 lcd.printf("alm(hours 0..23)");
Hedizxom 0:a800d044c724 210 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 211 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 212 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 213 if(cambio>=23){cambio=23;}
Hedizxom 0:a800d044c724 214 lcd.locate(0,1);
Hedizxom 0:a800d044c724 215 lcd.printf(" ");
Hedizxom 0:a800d044c724 216 lcd.locate(0,1);
Hedizxom 0:a800d044c724 217 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 218 while(chan==0){encoder.reset();cont=4;}
Hedizxom 0:a800d044c724 219 }
Hedizxom 0:a800d044c724 220 fle=cambio;
Hedizxom 0:a800d044c724 221 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 222 while(cont==4)
Hedizxom 0:a800d044c724 223 {
Hedizxom 0:a800d044c724 224 lcd.locate(0,0);
Hedizxom 0:a800d044c724 225 lcd.printf("alm(minutes 0..59)");
Hedizxom 0:a800d044c724 226 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 227 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 228 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 229 if(cambio>=59){cambio=59;}
Hedizxom 0:a800d044c724 230 lcd.locate(0,1);
Hedizxom 0:a800d044c724 231 lcd.printf(" ");
Hedizxom 0:a800d044c724 232 lcd.locate(0,1);
Hedizxom 0:a800d044c724 233 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 234 while(chan==0){encoder.reset();cont=5;}
Hedizxom 0:a800d044c724 235 }
Hedizxom 0:a800d044c724 236 mi=cambio;
Hedizxom 0:a800d044c724 237 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 238 while(cont==5)
Hedizxom 0:a800d044c724 239 {
Hedizxom 0:a800d044c724 240 lcd.locate(0,0);
Hedizxom 0:a800d044c724 241 lcd.printf("alm(seconds 0..59)");
Hedizxom 0:a800d044c724 242 diferencia=encoder.getPulses()-cambio;
Hedizxom 0:a800d044c724 243 cambio=encoder.getPulses();
Hedizxom 0:a800d044c724 244 if(cambio<=0){cambio=0;}
Hedizxom 0:a800d044c724 245 if(cambio>=59){cambio=59;}
Hedizxom 0:a800d044c724 246 lcd.locate(0,1);
Hedizxom 0:a800d044c724 247 lcd.printf(" ");
Hedizxom 0:a800d044c724 248 lcd.locate(0,1);
Hedizxom 0:a800d044c724 249 lcd.printf("%d",cambio);
Hedizxom 0:a800d044c724 250 while(chan==0){encoder.reset();cont=6;lcd.locate(0,0);lcd.printf("( ");}
Hedizxom 0:a800d044c724 251 }
Hedizxom 0:a800d044c724 252 se=cambio;
Hedizxom 0:a800d044c724 253 cambio=0;diferencia=0;
Hedizxom 0:a800d044c724 254 pla2=0;
Hedizxom 0:a800d044c724 255 }
Hedizxom 0:a800d044c724 256
Hedizxom 0:a800d044c724 257 cont=0;
Hedizxom 0:a800d044c724 258 cicl: if (rtc.getTime(tm) ) {
Hedizxom 0:a800d044c724 259 //pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
Hedizxom 0:a800d044c724 260 //pc.printf("The current date is : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
Hedizxom 0:a800d044c724 261 if(rlo==0){pla=1;goto sk;}
Hedizxom 0:a800d044c724 262 if(rl==0){pla2=1;goto sk2;}
Hedizxom 0:a800d044c724 263 lcd.cls();
Hedizxom 0:a800d044c724 264 lcd.locate(0,0);
Hedizxom 0:a800d044c724 265 lcd.printf("%02d:%02d:%02d", tm.hour, tm.min, tm.sec);
Hedizxom 0:a800d044c724 266 lcd.locate(0,1);
Hedizxom 0:a800d044c724 267 lcd.printf("%s/%02d/%02d/%4d", rtc.weekdayToString(tm.wday), tm.date, tm.mon, tm.year);
Hedizxom 0:a800d044c724 268 if((tm.date==di)&&(tm.mon==me)&&(tm.year==an)&&(tm.hour==fle)&&(tm.min==mi)&&(tm.sec==se)){key=1;}
Hedizxom 0:a800d044c724 269 while(key==1)
Hedizxom 0:a800d044c724 270 {
Hedizxom 0:a800d044c724 271 jod++;
Hedizxom 0:a800d044c724 272 ledr=0;buzz=1;
Hedizxom 0:a800d044c724 273 wait(0.5);
Hedizxom 0:a800d044c724 274 ledr=1;buzz=0;
Hedizxom 0:a800d044c724 275 wait(0.5);
Hedizxom 0:a800d044c724 276 if(chan!=1){key=0;jod=0;goto cicl;}
Hedizxom 0:a800d044c724 277 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;
Hedizxom 0:a800d044c724 278
Hedizxom 0:a800d044c724 279 }
Hedizxom 0:a800d044c724 280 }
Hedizxom 0:a800d044c724 281 wait(0.2);
Hedizxom 0:a800d044c724 282 goto cicl;
Hedizxom 0:a800d044c724 283 }
Hedizxom 0:a800d044c724 284
Hedizxom 0:a800d044c724 285 }
Hedizxom 0:a800d044c724 286
Hedizxom 0:a800d044c724 287
Hedizxom 0:a800d044c724 288
Hedizxom 0:a800d044c724 289 }
Hedizxom 0:a800d044c724 290