Reloj con 7 alarmas

Dependencies:   Debounced Pulse1 QEI RTC-DS1307 TextLCD mbed

Committer:
mcalvarezv
Date:
Mon Jun 04 16:52:14 2018 +0000
Revision:
0:bb887e759db2
Reloj con 7 alarmas las cuales se pueden seleccionar por medio de un control de tv samsung

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcalvarezv 0:bb887e759db2 1 #include "mbed.h"
mcalvarezv 0:bb887e759db2 2 #include "DebouncedIn.h"
mcalvarezv 0:bb887e759db2 3 #include "TextLCD.h"
mcalvarezv 0:bb887e759db2 4 #include "QEI.h"
mcalvarezv 0:bb887e759db2 5 #include "Rtc_Ds1307.h"
mcalvarezv 0:bb887e759db2 6 #include "string.h"
mcalvarezv 0:bb887e759db2 7 #include <Pulse1.h>
mcalvarezv 0:bb887e759db2 8
mcalvarezv 0:bb887e759db2 9 PulseInOut irda(PTB0);// Pin para la entrada de datos del sensor infrarrojo
mcalvarezv 0:bb887e759db2 10 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5);
mcalvarezv 0:bb887e759db2 11 Rtc_Ds1307 rtc(PTE0, PTE1);
mcalvarezv 0:bb887e759db2 12 QEI wheel (PTA16, PTA17, NC, 48);
mcalvarezv 0:bb887e759db2 13 DebouncedIn button_enco(PTC5);
mcalvarezv 0:bb887e759db2 14 DigitalOut myled(LED3);
mcalvarezv 0:bb887e759db2 15
mcalvarezv 0:bb887e759db2 16 int numN[35];
mcalvarezv 0:bb887e759db2 17 int numP[35];
mcalvarezv 0:bb887e759db2 18 int numbin[35];
mcalvarezv 0:bb887e759db2 19 int bin[35];
mcalvarezv 0:bb887e759db2 20 int dato;
mcalvarezv 0:bb887e759db2 21 int pul_low;
mcalvarezv 0:bb887e759db2 22 int i1,j1,k1,header,proL,proH;
mcalvarezv 0:bb887e759db2 23 char r;
mcalvarezv 0:bb887e759db2 24 char cadena[33];
mcalvarezv 0:bb887e759db2 25 char uno[33]="11100000111000000010000011011111"; //ya
mcalvarezv 0:bb887e759db2 26 char dos[33]="11100000111000001010000001011111"; //ya
mcalvarezv 0:bb887e759db2 27 char tres[33]="11100000111000000110000010011111"; //ya
mcalvarezv 0:bb887e759db2 28 char cuatro[33]="11100000111000000001000011101111";
mcalvarezv 0:bb887e759db2 29 char cinco[33]="11100000111000001001000001101111";
mcalvarezv 0:bb887e759db2 30 char seis[33]="11100000111000000101000010101111"; //ya
mcalvarezv 0:bb887e759db2 31 char siete[33]="11100000111000000011000011001111";
mcalvarezv 0:bb887e759db2 32 char set[33]="11100000111000000001011011101001";
mcalvarezv 0:bb887e759db2 33 int mode=0;
mcalvarezv 0:bb887e759db2 34 int code;
mcalvarezv 0:bb887e759db2 35 int numb=32;
mcalvarezv 0:bb887e759db2 36 int s=0;
mcalvarezv 0:bb887e759db2 37 //
mcalvarezv 0:bb887e759db2 38 int C1=0x0C;
mcalvarezv 0:bb887e759db2 39 int m;
mcalvarezv 0:bb887e759db2 40 int Conf=0; // selector alarma u hora
mcalvarezv 0:bb887e759db2 41 int Lugar=0; // Definen el punto en el cual va el programa
mcalvarezv 0:bb887e759db2 42 int i=0;
mcalvarezv 0:bb887e759db2 43 int j=1;
mcalvarezv 0:bb887e759db2 44 int IRDA=1;
mcalvarezv 0:bb887e759db2 45 int irda_en=0;
mcalvarezv 0:bb887e759db2 46 int visual=0;
mcalvarezv 0:bb887e759db2 47 int alarma=0;
mcalvarezv 0:bb887e759db2 48 int main()
mcalvarezv 0:bb887e759db2 49 {
mcalvarezv 0:bb887e759db2 50 myled=1;
mcalvarezv 0:bb887e759db2 51 j=1;
mcalvarezv 0:bb887e759db2 52 Rtc_Ds1307::Time_rtc tm2 = {};
mcalvarezv 0:bb887e759db2 53 Rtc_Ds1307::Time_rtc tm = {};
mcalvarezv 0:bb887e759db2 54 Rtc_Ds1307::Time_rtc Alarm[8] = {};
mcalvarezv 0:bb887e759db2 55 lcd.cls();
mcalvarezv 0:bb887e759db2 56 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
mcalvarezv 0:bb887e759db2 57 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 58 lcd.printf("--Alarmas --Hora");
mcalvarezv 0:bb887e759db2 59 rtc.getTime(tm); //lee los datos del DS1307
mcalvarezv 0:bb887e759db2 60
mcalvarezv 0:bb887e759db2 61 while(1)
mcalvarezv 0:bb887e759db2 62 {
mcalvarezv 0:bb887e759db2 63
mcalvarezv 0:bb887e759db2 64 switch (Lugar)
mcalvarezv 0:bb887e759db2 65 {
mcalvarezv 0:bb887e759db2 66 case 0:
mcalvarezv 0:bb887e759db2 67 m=wheel.getPulses(); // m son los datos del encoder
mcalvarezv 0:bb887e759db2 68 if(m!=0 && Conf==0){
mcalvarezv 0:bb887e759db2 69 Conf=1;
mcalvarezv 0:bb887e759db2 70 wheel.reset();
mcalvarezv 0:bb887e759db2 71 m=0;
mcalvarezv 0:bb887e759db2 72 }
mcalvarezv 0:bb887e759db2 73
mcalvarezv 0:bb887e759db2 74 if(m!=0 && Conf==1){
mcalvarezv 0:bb887e759db2 75 Conf=0;
mcalvarezv 0:bb887e759db2 76 wheel.reset();
mcalvarezv 0:bb887e759db2 77 m=0;
mcalvarezv 0:bb887e759db2 78 }
mcalvarezv 0:bb887e759db2 79
mcalvarezv 0:bb887e759db2 80 if(Conf==0){
mcalvarezv 0:bb887e759db2 81
mcalvarezv 0:bb887e759db2 82 lcd.locate(11,0);
mcalvarezv 0:bb887e759db2 83 lcd.printf("-");
mcalvarezv 0:bb887e759db2 84 lcd.locate(1,0);
mcalvarezv 0:bb887e759db2 85 lcd.printf(">");
mcalvarezv 0:bb887e759db2 86 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 87 wait(0.1);
mcalvarezv 0:bb887e759db2 88
mcalvarezv 0:bb887e759db2 89 }
mcalvarezv 0:bb887e759db2 90
mcalvarezv 0:bb887e759db2 91 if(Conf==1){
mcalvarezv 0:bb887e759db2 92
mcalvarezv 0:bb887e759db2 93 lcd.locate(1,0);
mcalvarezv 0:bb887e759db2 94 lcd.printf("-");
mcalvarezv 0:bb887e759db2 95 lcd.locate(11,0);
mcalvarezv 0:bb887e759db2 96 lcd.printf(">");
mcalvarezv 0:bb887e759db2 97 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 98 wait(0.1);
mcalvarezv 0:bb887e759db2 99 }
mcalvarezv 0:bb887e759db2 100
mcalvarezv 0:bb887e759db2 101 if (button_enco.falling()){ //si se pulsa boton encoder
mcalvarezv 0:bb887e759db2 102 Lugar++;
mcalvarezv 0:bb887e759db2 103 m=0;
mcalvarezv 0:bb887e759db2 104 }
mcalvarezv 0:bb887e759db2 105
mcalvarezv 0:bb887e759db2 106 break;
mcalvarezv 0:bb887e759db2 107
mcalvarezv 0:bb887e759db2 108 case 1:
mcalvarezv 0:bb887e759db2 109 switch(i)
mcalvarezv 0:bb887e759db2 110 {
mcalvarezv 0:bb887e759db2 111 case 0:
mcalvarezv 0:bb887e759db2 112 if(Conf==0) // ALARMA
mcalvarezv 0:bb887e759db2 113 {
mcalvarezv 0:bb887e759db2 114 lcd.cls();
mcalvarezv 0:bb887e759db2 115 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 116 lcd.printf("Poner Alarmas ");
mcalvarezv 0:bb887e759db2 117 wait(1);
mcalvarezv 0:bb887e759db2 118 lcd.cls();
mcalvarezv 0:bb887e759db2 119 i++;
mcalvarezv 0:bb887e759db2 120 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 121 lcd.printf("dia: ");
mcalvarezv 0:bb887e759db2 122 m=0;
mcalvarezv 0:bb887e759db2 123 }
mcalvarezv 0:bb887e759db2 124
mcalvarezv 0:bb887e759db2 125 if(Conf==1) //RELOJ
mcalvarezv 0:bb887e759db2 126 {
mcalvarezv 0:bb887e759db2 127 lcd.cls();
mcalvarezv 0:bb887e759db2 128 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 129 lcd.printf("Poner Hora ");
mcalvarezv 0:bb887e759db2 130 wait(1);
mcalvarezv 0:bb887e759db2 131 i++;
mcalvarezv 0:bb887e759db2 132 lcd.cls();
mcalvarezv 0:bb887e759db2 133 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 134 lcd.printf("dia: ");
mcalvarezv 0:bb887e759db2 135 m=0;
mcalvarezv 0:bb887e759db2 136
mcalvarezv 0:bb887e759db2 137 }
mcalvarezv 0:bb887e759db2 138
mcalvarezv 0:bb887e759db2 139 break;
mcalvarezv 0:bb887e759db2 140
mcalvarezv 0:bb887e759db2 141 case 1: //configuramos los dias de la semana
mcalvarezv 0:bb887e759db2 142 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 143 if (m!=0)
mcalvarezv 0:bb887e759db2 144 {
mcalvarezv 0:bb887e759db2 145 tm.wday=tm.wday+m;
mcalvarezv 0:bb887e759db2 146 if(tm.wday>7)
mcalvarezv 0:bb887e759db2 147 {
mcalvarezv 0:bb887e759db2 148 tm.wday=1;
mcalvarezv 0:bb887e759db2 149 }
mcalvarezv 0:bb887e759db2 150 if(tm.wday<1)
mcalvarezv 0:bb887e759db2 151 {
mcalvarezv 0:bb887e759db2 152 tm.wday=1;
mcalvarezv 0:bb887e759db2 153 }
mcalvarezv 0:bb887e759db2 154
mcalvarezv 0:bb887e759db2 155 wheel.reset();
mcalvarezv 0:bb887e759db2 156 m=0;
mcalvarezv 0:bb887e759db2 157 }
mcalvarezv 0:bb887e759db2 158
mcalvarezv 0:bb887e759db2 159 switch(tm.wday){
mcalvarezv 0:bb887e759db2 160 case (1):
mcalvarezv 0:bb887e759db2 161 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 162 lcd.printf("domingo ");
mcalvarezv 0:bb887e759db2 163 break;
mcalvarezv 0:bb887e759db2 164 case (2):
mcalvarezv 0:bb887e759db2 165 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 166 lcd.printf("lunes ");
mcalvarezv 0:bb887e759db2 167 break;
mcalvarezv 0:bb887e759db2 168 case (3):
mcalvarezv 0:bb887e759db2 169 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 170 lcd.printf("martes ");
mcalvarezv 0:bb887e759db2 171 break;
mcalvarezv 0:bb887e759db2 172 case (4):
mcalvarezv 0:bb887e759db2 173 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 174 lcd.printf("miercoles");
mcalvarezv 0:bb887e759db2 175 break;
mcalvarezv 0:bb887e759db2 176 case (5):
mcalvarezv 0:bb887e759db2 177 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 178 lcd.printf("jueves ");
mcalvarezv 0:bb887e759db2 179 break;
mcalvarezv 0:bb887e759db2 180 case (6):
mcalvarezv 0:bb887e759db2 181 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 182 lcd.printf("viernes ");
mcalvarezv 0:bb887e759db2 183 break;
mcalvarezv 0:bb887e759db2 184 case (7):
mcalvarezv 0:bb887e759db2 185 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 186 lcd.printf("sabado ");
mcalvarezv 0:bb887e759db2 187 break;
mcalvarezv 0:bb887e759db2 188 }
mcalvarezv 0:bb887e759db2 189
mcalvarezv 0:bb887e759db2 190
mcalvarezv 0:bb887e759db2 191 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 192 {
mcalvarezv 0:bb887e759db2 193 switch(Conf)
mcalvarezv 0:bb887e759db2 194 {
mcalvarezv 0:bb887e759db2 195 case 0:
mcalvarezv 0:bb887e759db2 196 i=5;
mcalvarezv 0:bb887e759db2 197 m=0;
mcalvarezv 0:bb887e759db2 198 lcd.cls();
mcalvarezv 0:bb887e759db2 199 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 200 lcd.printf("hora: ");
mcalvarezv 0:bb887e759db2 201 m=0;
mcalvarezv 0:bb887e759db2 202 break;
mcalvarezv 0:bb887e759db2 203 case 1:
mcalvarezv 0:bb887e759db2 204 i=2;
mcalvarezv 0:bb887e759db2 205 m=0;
mcalvarezv 0:bb887e759db2 206 lcd.cls();
mcalvarezv 0:bb887e759db2 207 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 208 lcd.printf("dia: ");
mcalvarezv 0:bb887e759db2 209 break;
mcalvarezv 0:bb887e759db2 210 }
mcalvarezv 0:bb887e759db2 211 }
mcalvarezv 0:bb887e759db2 212
mcalvarezv 0:bb887e759db2 213 break;
mcalvarezv 0:bb887e759db2 214 case 2: // configuramos fecha
mcalvarezv 0:bb887e759db2 215 m=0;
mcalvarezv 0:bb887e759db2 216 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 217 if (m!=0)
mcalvarezv 0:bb887e759db2 218 {
mcalvarezv 0:bb887e759db2 219 tm.date=tm.date+m;
mcalvarezv 0:bb887e759db2 220 if(tm.date>31)
mcalvarezv 0:bb887e759db2 221 {
mcalvarezv 0:bb887e759db2 222 tm.date=0;
mcalvarezv 0:bb887e759db2 223 }
mcalvarezv 0:bb887e759db2 224 if(tm.date<1)
mcalvarezv 0:bb887e759db2 225 {
mcalvarezv 0:bb887e759db2 226 tm.date=1;
mcalvarezv 0:bb887e759db2 227 }
mcalvarezv 0:bb887e759db2 228
mcalvarezv 0:bb887e759db2 229 wheel.reset();
mcalvarezv 0:bb887e759db2 230 m=0;
mcalvarezv 0:bb887e759db2 231 }
mcalvarezv 0:bb887e759db2 232 lcd.locate(5,0);
mcalvarezv 0:bb887e759db2 233 lcd.printf("%02d ",tm.date);
mcalvarezv 0:bb887e759db2 234
mcalvarezv 0:bb887e759db2 235 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 236 {
mcalvarezv 0:bb887e759db2 237 i++;
mcalvarezv 0:bb887e759db2 238 m=0;
mcalvarezv 0:bb887e759db2 239 lcd.cls();
mcalvarezv 0:bb887e759db2 240 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 241 lcd.printf("mes: ");
mcalvarezv 0:bb887e759db2 242
mcalvarezv 0:bb887e759db2 243 }
mcalvarezv 0:bb887e759db2 244 break;
mcalvarezv 0:bb887e759db2 245 case 3: // configuramos mes
mcalvarezv 0:bb887e759db2 246 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 247 if (m!=0)
mcalvarezv 0:bb887e759db2 248 {
mcalvarezv 0:bb887e759db2 249 tm.mon=tm.mon+m;
mcalvarezv 0:bb887e759db2 250 if(tm.mon>12)
mcalvarezv 0:bb887e759db2 251 {
mcalvarezv 0:bb887e759db2 252 tm.mon=0;
mcalvarezv 0:bb887e759db2 253 }
mcalvarezv 0:bb887e759db2 254 if(tm.mon<1)
mcalvarezv 0:bb887e759db2 255 {
mcalvarezv 0:bb887e759db2 256 tm.mon=1;
mcalvarezv 0:bb887e759db2 257 }
mcalvarezv 0:bb887e759db2 258
mcalvarezv 0:bb887e759db2 259 wheel.reset();
mcalvarezv 0:bb887e759db2 260 m=0;
mcalvarezv 0:bb887e759db2 261 }
mcalvarezv 0:bb887e759db2 262 lcd.locate(7,0);
mcalvarezv 0:bb887e759db2 263 lcd.printf("%02d",tm.mon);
mcalvarezv 0:bb887e759db2 264
mcalvarezv 0:bb887e759db2 265 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 266 {
mcalvarezv 0:bb887e759db2 267 i++;
mcalvarezv 0:bb887e759db2 268 m=0;
mcalvarezv 0:bb887e759db2 269 lcd.cls();
mcalvarezv 0:bb887e759db2 270 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 271 lcd.printf("anio: ");
mcalvarezv 0:bb887e759db2 272
mcalvarezv 0:bb887e759db2 273 }
mcalvarezv 0:bb887e759db2 274
mcalvarezv 0:bb887e759db2 275 break;
mcalvarezv 0:bb887e759db2 276
mcalvarezv 0:bb887e759db2 277 case 4: //configuramos año
mcalvarezv 0:bb887e759db2 278 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 279 if (m!=0)
mcalvarezv 0:bb887e759db2 280 {
mcalvarezv 0:bb887e759db2 281 tm.year=tm.year+m;
mcalvarezv 0:bb887e759db2 282 if(tm.year>2100)
mcalvarezv 0:bb887e759db2 283 {
mcalvarezv 0:bb887e759db2 284 tm.mon=0;
mcalvarezv 0:bb887e759db2 285 }
mcalvarezv 0:bb887e759db2 286 if(tm.year<2017)
mcalvarezv 0:bb887e759db2 287 {
mcalvarezv 0:bb887e759db2 288 tm.year=2017;
mcalvarezv 0:bb887e759db2 289 }
mcalvarezv 0:bb887e759db2 290
mcalvarezv 0:bb887e759db2 291 wheel.reset();
mcalvarezv 0:bb887e759db2 292 m=0;
mcalvarezv 0:bb887e759db2 293 }
mcalvarezv 0:bb887e759db2 294 lcd.locate(6,0);
mcalvarezv 0:bb887e759db2 295 lcd.printf("%02d",tm.year);
mcalvarezv 0:bb887e759db2 296
mcalvarezv 0:bb887e759db2 297 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 298 {
mcalvarezv 0:bb887e759db2 299 i=5;
mcalvarezv 0:bb887e759db2 300 m=0;
mcalvarezv 0:bb887e759db2 301 lcd.cls();
mcalvarezv 0:bb887e759db2 302 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 303 lcd.printf("hora: ");
mcalvarezv 0:bb887e759db2 304
mcalvarezv 0:bb887e759db2 305
mcalvarezv 0:bb887e759db2 306 }
mcalvarezv 0:bb887e759db2 307
mcalvarezv 0:bb887e759db2 308 break;
mcalvarezv 0:bb887e759db2 309
mcalvarezv 0:bb887e759db2 310 case 5: //configuramos hora
mcalvarezv 0:bb887e759db2 311 m=0;
mcalvarezv 0:bb887e759db2 312 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 313 if (m!=0)
mcalvarezv 0:bb887e759db2 314 {
mcalvarezv 0:bb887e759db2 315 tm.hour+= m;
mcalvarezv 0:bb887e759db2 316 if(tm.hour>23)
mcalvarezv 0:bb887e759db2 317 {
mcalvarezv 0:bb887e759db2 318 tm.hour=0;
mcalvarezv 0:bb887e759db2 319 }
mcalvarezv 0:bb887e759db2 320
mcalvarezv 0:bb887e759db2 321 if(tm.hour<0)
mcalvarezv 0:bb887e759db2 322 {
mcalvarezv 0:bb887e759db2 323 tm.hour=0;
mcalvarezv 0:bb887e759db2 324 }
mcalvarezv 0:bb887e759db2 325
mcalvarezv 0:bb887e759db2 326 wheel.reset();
mcalvarezv 0:bb887e759db2 327 m=0;
mcalvarezv 0:bb887e759db2 328 }
mcalvarezv 0:bb887e759db2 329 lcd.locate(6,0);
mcalvarezv 0:bb887e759db2 330 lcd.printf("%02d",tm.hour);
mcalvarezv 0:bb887e759db2 331
mcalvarezv 0:bb887e759db2 332 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 333 {
mcalvarezv 0:bb887e759db2 334 i=6;
mcalvarezv 0:bb887e759db2 335 m=0;
mcalvarezv 0:bb887e759db2 336 lcd.cls();
mcalvarezv 0:bb887e759db2 337 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 338 lcd.printf("min: ");
mcalvarezv 0:bb887e759db2 339 //tm.min=0;
mcalvarezv 0:bb887e759db2 340 }
mcalvarezv 0:bb887e759db2 341
mcalvarezv 0:bb887e759db2 342 break;
mcalvarezv 0:bb887e759db2 343
mcalvarezv 0:bb887e759db2 344 case 6: //configuramos minutos
mcalvarezv 0:bb887e759db2 345 m=0;
mcalvarezv 0:bb887e759db2 346 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 347 if (m!=0)
mcalvarezv 0:bb887e759db2 348 {
mcalvarezv 0:bb887e759db2 349 tm.min=tm.min+m;
mcalvarezv 0:bb887e759db2 350 if(tm.min>59)
mcalvarezv 0:bb887e759db2 351 {
mcalvarezv 0:bb887e759db2 352 tm.min=0;
mcalvarezv 0:bb887e759db2 353 }
mcalvarezv 0:bb887e759db2 354 if(tm.min<0)
mcalvarezv 0:bb887e759db2 355 {
mcalvarezv 0:bb887e759db2 356 tm.min=0;
mcalvarezv 0:bb887e759db2 357 }
mcalvarezv 0:bb887e759db2 358
mcalvarezv 0:bb887e759db2 359 wheel.reset();
mcalvarezv 0:bb887e759db2 360 m=0;
mcalvarezv 0:bb887e759db2 361 }
mcalvarezv 0:bb887e759db2 362 lcd.locate(8,0);
mcalvarezv 0:bb887e759db2 363 lcd.printf("%02d",tm.min);
mcalvarezv 0:bb887e759db2 364
mcalvarezv 0:bb887e759db2 365 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 366 {
mcalvarezv 0:bb887e759db2 367 i=7;
mcalvarezv 0:bb887e759db2 368 m=0;
mcalvarezv 0:bb887e759db2 369 lcd.cls();
mcalvarezv 0:bb887e759db2 370 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 371 lcd.printf("seg: ");
mcalvarezv 0:bb887e759db2 372 //tm.sec=0;
mcalvarezv 0:bb887e759db2 373 }
mcalvarezv 0:bb887e759db2 374
mcalvarezv 0:bb887e759db2 375 break;
mcalvarezv 0:bb887e759db2 376
mcalvarezv 0:bb887e759db2 377
mcalvarezv 0:bb887e759db2 378 case 7: //configuramos los segundos
mcalvarezv 0:bb887e759db2 379 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 380 if (m!=0)
mcalvarezv 0:bb887e759db2 381 {
mcalvarezv 0:bb887e759db2 382 tm.sec=tm.sec+m;
mcalvarezv 0:bb887e759db2 383 if(tm.sec>59)
mcalvarezv 0:bb887e759db2 384 {
mcalvarezv 0:bb887e759db2 385 tm.sec=0;
mcalvarezv 0:bb887e759db2 386 }
mcalvarezv 0:bb887e759db2 387 if(tm.sec<0)
mcalvarezv 0:bb887e759db2 388 {
mcalvarezv 0:bb887e759db2 389 tm.sec=0;
mcalvarezv 0:bb887e759db2 390 }
mcalvarezv 0:bb887e759db2 391
mcalvarezv 0:bb887e759db2 392 wheel.reset();
mcalvarezv 0:bb887e759db2 393 m=0;
mcalvarezv 0:bb887e759db2 394 }
mcalvarezv 0:bb887e759db2 395 lcd.locate(8,0);
mcalvarezv 0:bb887e759db2 396 lcd.printf("%02d",tm.sec);
mcalvarezv 0:bb887e759db2 397
mcalvarezv 0:bb887e759db2 398 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 399 {
mcalvarezv 0:bb887e759db2 400
mcalvarezv 0:bb887e759db2 401 if(Conf==0)
mcalvarezv 0:bb887e759db2 402 {
mcalvarezv 0:bb887e759db2 403 Alarm[j]=tm;
mcalvarezv 0:bb887e759db2 404 lcd.cls();
mcalvarezv 0:bb887e759db2 405 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 406 lcd.printf("Alarma %d lista ",j);
mcalvarezv 0:bb887e759db2 407 wait(1);
mcalvarezv 0:bb887e759db2 408 i=0;
mcalvarezv 0:bb887e759db2 409 m=0;
mcalvarezv 0:bb887e759db2 410 if(j>=7)
mcalvarezv 0:bb887e759db2 411 {
mcalvarezv 0:bb887e759db2 412 Lugar++;
mcalvarezv 0:bb887e759db2 413 }
mcalvarezv 0:bb887e759db2 414 j++;
mcalvarezv 0:bb887e759db2 415 lcd.cls();
mcalvarezv 0:bb887e759db2 416
mcalvarezv 0:bb887e759db2 417 }
mcalvarezv 0:bb887e759db2 418
mcalvarezv 0:bb887e759db2 419 if(Conf==1)
mcalvarezv 0:bb887e759db2 420 {
mcalvarezv 0:bb887e759db2 421 rtc.setTime(tm, true, false);
mcalvarezv 0:bb887e759db2 422 lcd.cls();
mcalvarezv 0:bb887e759db2 423 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 424 lcd.printf("Hora lista ");
mcalvarezv 0:bb887e759db2 425 wait(1);
mcalvarezv 0:bb887e759db2 426 i=0;
mcalvarezv 0:bb887e759db2 427 m=0;
mcalvarezv 0:bb887e759db2 428 Lugar=0;
mcalvarezv 0:bb887e759db2 429 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 430 lcd.printf("--Alarmas --Hora");
mcalvarezv 0:bb887e759db2 431 }
mcalvarezv 0:bb887e759db2 432
mcalvarezv 0:bb887e759db2 433
mcalvarezv 0:bb887e759db2 434 }
mcalvarezv 0:bb887e759db2 435
mcalvarezv 0:bb887e759db2 436 break;
mcalvarezv 0:bb887e759db2 437
mcalvarezv 0:bb887e759db2 438 }
mcalvarezv 0:bb887e759db2 439 break;
mcalvarezv 0:bb887e759db2 440
mcalvarezv 0:bb887e759db2 441 case 2: // comprobamos el estado de la alarma
mcalvarezv 0:bb887e759db2 442 rtc.getTime(tm2);
mcalvarezv 0:bb887e759db2 443
mcalvarezv 0:bb887e759db2 444
mcalvarezv 0:bb887e759db2 445 if(visual==0)
mcalvarezv 0:bb887e759db2 446 {
mcalvarezv 0:bb887e759db2 447 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 448 lcd.printf("Hora: ");
mcalvarezv 0:bb887e759db2 449 lcd.locate(8,0);
mcalvarezv 0:bb887e759db2 450 lcd.printf("%02d:",tm2.hour);
mcalvarezv 0:bb887e759db2 451 lcd.printf("%02d:",tm2.min);
mcalvarezv 0:bb887e759db2 452 lcd.printf("%02d",tm2.sec);
mcalvarezv 0:bb887e759db2 453 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 454 switch(tm2.wday){
mcalvarezv 0:bb887e759db2 455 case (1):
mcalvarezv 0:bb887e759db2 456 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 457 lcd.printf("D ");
mcalvarezv 0:bb887e759db2 458 break;
mcalvarezv 0:bb887e759db2 459 case (2):
mcalvarezv 0:bb887e759db2 460 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 461 lcd.printf("L ");
mcalvarezv 0:bb887e759db2 462 break;
mcalvarezv 0:bb887e759db2 463 case (3):
mcalvarezv 0:bb887e759db2 464 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 465 lcd.printf("M ");
mcalvarezv 0:bb887e759db2 466 break;
mcalvarezv 0:bb887e759db2 467 case (4):
mcalvarezv 0:bb887e759db2 468 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 469 lcd.printf("M ");
mcalvarezv 0:bb887e759db2 470 break;
mcalvarezv 0:bb887e759db2 471 case (5):
mcalvarezv 0:bb887e759db2 472 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 473 lcd.printf("J ");
mcalvarezv 0:bb887e759db2 474 break;
mcalvarezv 0:bb887e759db2 475 case (6):
mcalvarezv 0:bb887e759db2 476 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 477 lcd.printf("V ");
mcalvarezv 0:bb887e759db2 478 break;
mcalvarezv 0:bb887e759db2 479 case (7):
mcalvarezv 0:bb887e759db2 480 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 481 lcd.printf("S ");
mcalvarezv 0:bb887e759db2 482 break;
mcalvarezv 0:bb887e759db2 483 }
mcalvarezv 0:bb887e759db2 484 lcd.locate(6,1);
mcalvarezv 0:bb887e759db2 485 lcd.printf("%02d/",tm2.date);
mcalvarezv 0:bb887e759db2 486 lcd.printf("%02d/",tm2.mon);
mcalvarezv 0:bb887e759db2 487 lcd.printf("%02d",tm2.year);
mcalvarezv 0:bb887e759db2 488 wait(0.1);
mcalvarezv 0:bb887e759db2 489
mcalvarezv 0:bb887e759db2 490 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 491 if(m!=0)
mcalvarezv 0:bb887e759db2 492 {
mcalvarezv 0:bb887e759db2 493 visual=1;
mcalvarezv 0:bb887e759db2 494 wheel.reset();
mcalvarezv 0:bb887e759db2 495 m=0;
mcalvarezv 0:bb887e759db2 496 }
mcalvarezv 0:bb887e759db2 497 }
mcalvarezv 0:bb887e759db2 498
mcalvarezv 0:bb887e759db2 499 if(visual==1)
mcalvarezv 0:bb887e759db2 500 {
mcalvarezv 0:bb887e759db2 501 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 502 lcd.printf(" ");
mcalvarezv 0:bb887e759db2 503 lcd.locate(8,0);
mcalvarezv 0:bb887e759db2 504 lcd.printf("%02d:",Alarm[IRDA].hour);
mcalvarezv 0:bb887e759db2 505 lcd.printf("%02d:",Alarm[IRDA].min);
mcalvarezv 0:bb887e759db2 506 lcd.printf("%02d",Alarm[IRDA].sec);
mcalvarezv 0:bb887e759db2 507
mcalvarezv 0:bb887e759db2 508 switch(Alarm[IRDA].wday){
mcalvarezv 0:bb887e759db2 509 case (1):
mcalvarezv 0:bb887e759db2 510 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 511 lcd.printf("D ");
mcalvarezv 0:bb887e759db2 512 break;
mcalvarezv 0:bb887e759db2 513 case (2):
mcalvarezv 0:bb887e759db2 514 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 515 lcd.printf("L ");
mcalvarezv 0:bb887e759db2 516 break;
mcalvarezv 0:bb887e759db2 517 case (3):
mcalvarezv 0:bb887e759db2 518 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 519 lcd.printf("M ");
mcalvarezv 0:bb887e759db2 520 break;
mcalvarezv 0:bb887e759db2 521 case (4):
mcalvarezv 0:bb887e759db2 522 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 523 lcd.printf("M ");
mcalvarezv 0:bb887e759db2 524 break;
mcalvarezv 0:bb887e759db2 525 case (5):
mcalvarezv 0:bb887e759db2 526 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 527 lcd.printf("J ");
mcalvarezv 0:bb887e759db2 528 break;
mcalvarezv 0:bb887e759db2 529 case (6):
mcalvarezv 0:bb887e759db2 530 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 531 lcd.printf("V ");
mcalvarezv 0:bb887e759db2 532 break;
mcalvarezv 0:bb887e759db2 533 case (7):
mcalvarezv 0:bb887e759db2 534 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 535 lcd.printf("S ");
mcalvarezv 0:bb887e759db2 536 break;
mcalvarezv 0:bb887e759db2 537 }
mcalvarezv 0:bb887e759db2 538 lcd.locate(5,1);
mcalvarezv 0:bb887e759db2 539 lcd.printf("Alarma %d",IRDA);
mcalvarezv 0:bb887e759db2 540 wait(0.1);
mcalvarezv 0:bb887e759db2 541 ////
mcalvarezv 0:bb887e759db2 542 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 543 if(m!=0)
mcalvarezv 0:bb887e759db2 544 {
mcalvarezv 0:bb887e759db2 545 visual=0;
mcalvarezv 0:bb887e759db2 546 wheel.reset();
mcalvarezv 0:bb887e759db2 547 m=0;
mcalvarezv 0:bb887e759db2 548 }
mcalvarezv 0:bb887e759db2 549 }
mcalvarezv 0:bb887e759db2 550 //Comprobación de la alarma
mcalvarezv 0:bb887e759db2 551 if( (tm2.wday==Alarm[IRDA].wday)&&((tm2.hour)==Alarm[IRDA].hour)&&(tm2.min==Alarm[IRDA].min)&&(tm2.sec==Alarm[IRDA].sec) )
mcalvarezv 0:bb887e759db2 552 {
mcalvarezv 0:bb887e759db2 553 Lugar++;
mcalvarezv 0:bb887e759db2 554 lcd.cls();
mcalvarezv 0:bb887e759db2 555 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 556 lcd.printf("Alarma Sonando");
mcalvarezv 0:bb887e759db2 557 wait(1);
mcalvarezv 0:bb887e759db2 558 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 559 lcd.printf("->Apagar ");
mcalvarezv 0:bb887e759db2 560 lcd.locate(0,1);
mcalvarezv 0:bb887e759db2 561 lcd.printf("--Posponer ");
mcalvarezv 0:bb887e759db2 562 m=0;
mcalvarezv 0:bb887e759db2 563 }
mcalvarezv 0:bb887e759db2 564 //configuración infrarrojo
mcalvarezv 0:bb887e759db2 565 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 566 {
mcalvarezv 0:bb887e759db2 567 irda_en=1;
mcalvarezv 0:bb887e759db2 568 lcd.cls();
mcalvarezv 0:bb887e759db2 569 lcd.locate(0,0);
mcalvarezv 0:bb887e759db2 570 lcd.printf(" Senal ");
mcalvarezv 0:bb887e759db2 571
mcalvarezv 0:bb887e759db2 572 }
mcalvarezv 0:bb887e759db2 573
mcalvarezv 0:bb887e759db2 574 break;
mcalvarezv 0:bb887e759db2 575
mcalvarezv 0:bb887e759db2 576 case 3: //Posponer
mcalvarezv 0:bb887e759db2 577
mcalvarezv 0:bb887e759db2 578 if(alarma==0)
mcalvarezv 0:bb887e759db2 579 {
mcalvarezv 0:bb887e759db2 580 myled=1;
mcalvarezv 0:bb887e759db2 581 wait(0.5);
mcalvarezv 0:bb887e759db2 582 myled=0;
mcalvarezv 0:bb887e759db2 583 wait(0.5);
mcalvarezv 0:bb887e759db2 584
mcalvarezv 0:bb887e759db2 585 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 586 if(m!=0)
mcalvarezv 0:bb887e759db2 587 {
mcalvarezv 0:bb887e759db2 588 alarma=1;
mcalvarezv 0:bb887e759db2 589 m=0;
mcalvarezv 0:bb887e759db2 590 wheel.reset();
mcalvarezv 0:bb887e759db2 591
mcalvarezv 0:bb887e759db2 592 lcd.locate(1,0);
mcalvarezv 0:bb887e759db2 593 lcd.printf("-");
mcalvarezv 0:bb887e759db2 594 lcd.locate(1,1);
mcalvarezv 0:bb887e759db2 595 lcd.printf(">");
mcalvarezv 0:bb887e759db2 596 }
mcalvarezv 0:bb887e759db2 597 }
mcalvarezv 0:bb887e759db2 598
mcalvarezv 0:bb887e759db2 599
mcalvarezv 0:bb887e759db2 600
mcalvarezv 0:bb887e759db2 601 if(alarma==1) //Apagar
mcalvarezv 0:bb887e759db2 602 {
mcalvarezv 0:bb887e759db2 603 myled=1;
mcalvarezv 0:bb887e759db2 604 wait(0.5);
mcalvarezv 0:bb887e759db2 605 myled=0;
mcalvarezv 0:bb887e759db2 606 wait(0.5);
mcalvarezv 0:bb887e759db2 607
mcalvarezv 0:bb887e759db2 608 m=wheel.getPulses();
mcalvarezv 0:bb887e759db2 609 if(m!=0)
mcalvarezv 0:bb887e759db2 610 {
mcalvarezv 0:bb887e759db2 611 alarma=0;
mcalvarezv 0:bb887e759db2 612 m=0;
mcalvarezv 0:bb887e759db2 613 wheel.reset();
mcalvarezv 0:bb887e759db2 614
mcalvarezv 0:bb887e759db2 615 lcd.locate(1,0);
mcalvarezv 0:bb887e759db2 616 lcd.printf(">");
mcalvarezv 0:bb887e759db2 617 lcd.locate(1,1);
mcalvarezv 0:bb887e759db2 618 lcd.printf("-");
mcalvarezv 0:bb887e759db2 619 }
mcalvarezv 0:bb887e759db2 620 }
mcalvarezv 0:bb887e759db2 621
mcalvarezv 0:bb887e759db2 622 if (button_enco.falling())
mcalvarezv 0:bb887e759db2 623 {
mcalvarezv 0:bb887e759db2 624 if(alarma==0)
mcalvarezv 0:bb887e759db2 625 {
mcalvarezv 0:bb887e759db2 626 Lugar=2; //regresamos al lugar del reloj
mcalvarezv 0:bb887e759db2 627 wheel.reset();
mcalvarezv 0:bb887e759db2 628 m=0;
mcalvarezv 0:bb887e759db2 629 myled=1;
mcalvarezv 0:bb887e759db2 630 lcd.cls();
mcalvarezv 0:bb887e759db2 631 }
mcalvarezv 0:bb887e759db2 632 if(alarma==1)
mcalvarezv 0:bb887e759db2 633 {
mcalvarezv 0:bb887e759db2 634 Lugar=2; //regresamos al lugar de configuracion de alarma
mcalvarezv 0:bb887e759db2 635 rtc.getTime(tm2);
mcalvarezv 0:bb887e759db2 636 if(tm.min!=58)
mcalvarezv 0:bb887e759db2 637 {
mcalvarezv 0:bb887e759db2 638 Alarm[IRDA].min=tm2.min+1;
mcalvarezv 0:bb887e759db2 639 }
mcalvarezv 0:bb887e759db2 640 if(tm.min==59)
mcalvarezv 0:bb887e759db2 641 {
mcalvarezv 0:bb887e759db2 642 Alarm[IRDA].min=0;
mcalvarezv 0:bb887e759db2 643 Alarm[IRDA].hour=tm2.hour+1;
mcalvarezv 0:bb887e759db2 644 }
mcalvarezv 0:bb887e759db2 645 Alarm[IRDA].sec=tm2.sec;
mcalvarezv 0:bb887e759db2 646 lcd.cls();
mcalvarezv 0:bb887e759db2 647 alarma=0;
mcalvarezv 0:bb887e759db2 648 myled=1;
mcalvarezv 0:bb887e759db2 649 }
mcalvarezv 0:bb887e759db2 650 }
mcalvarezv 0:bb887e759db2 651 break;
mcalvarezv 0:bb887e759db2 652 }
mcalvarezv 0:bb887e759db2 653 // lecturas del infrarrojo
mcalvarezv 0:bb887e759db2 654 while (irda_en)
mcalvarezv 0:bb887e759db2 655 {
mcalvarezv 0:bb887e759db2 656 fflush( stdin );
mcalvarezv 0:bb887e759db2 657 lop2: if(!mode){
mcalvarezv 0:bb887e759db2 658 header = irda.read_high_us();
mcalvarezv 0:bb887e759db2 659 if(header>3500) goto seguir2;
mcalvarezv 0:bb887e759db2 660 goto lop2;
mcalvarezv 0:bb887e759db2 661 }
mcalvarezv 0:bb887e759db2 662
mcalvarezv 0:bb887e759db2 663 seguir2:
mcalvarezv 0:bb887e759db2 664 for(i1=0;i1<numb;++i1){
mcalvarezv 0:bb887e759db2 665 numP[i1] = irda.read_high_us(); //funcion para leer un pulso alto
mcalvarezv 0:bb887e759db2 666 if (numP[i1]<1000){
mcalvarezv 0:bb887e759db2 667 s=0;
mcalvarezv 0:bb887e759db2 668 r='0';
mcalvarezv 0:bb887e759db2 669 }else{
mcalvarezv 0:bb887e759db2 670 s=1;
mcalvarezv 0:bb887e759db2 671 r='1';
mcalvarezv 0:bb887e759db2 672 }
mcalvarezv 0:bb887e759db2 673 numbin[i1]=s;
mcalvarezv 0:bb887e759db2 674 cadena[i1]=r;
mcalvarezv 0:bb887e759db2 675 }
mcalvarezv 0:bb887e759db2 676 if (!strcmp(cadena,uno)){
mcalvarezv 0:bb887e759db2 677 IRDA=1;
mcalvarezv 0:bb887e759db2 678 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 679 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 680 goto seguir2;
mcalvarezv 0:bb887e759db2 681 }else if (!strcmp(cadena,dos)){
mcalvarezv 0:bb887e759db2 682 IRDA=2;
mcalvarezv 0:bb887e759db2 683 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 684 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 685 goto seguir2;
mcalvarezv 0:bb887e759db2 686 }else if (!strcmp(cadena,tres)){
mcalvarezv 0:bb887e759db2 687 IRDA=3;
mcalvarezv 0:bb887e759db2 688 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 689 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 690 goto seguir2;
mcalvarezv 0:bb887e759db2 691 }else if (!strcmp(cadena,cuatro)){
mcalvarezv 0:bb887e759db2 692 IRDA=4;
mcalvarezv 0:bb887e759db2 693 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 694 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 695 goto seguir2;
mcalvarezv 0:bb887e759db2 696 }else if (!strcmp(cadena,cinco)){
mcalvarezv 0:bb887e759db2 697 IRDA=5;
mcalvarezv 0:bb887e759db2 698 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 699 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 700 goto seguir2;
mcalvarezv 0:bb887e759db2 701 }else if (!strcmp(cadena,seis)){
mcalvarezv 0:bb887e759db2 702 IRDA=6;
mcalvarezv 0:bb887e759db2 703 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 704 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 705 goto seguir2;
mcalvarezv 0:bb887e759db2 706 }else if (!strcmp(cadena,siete)){
mcalvarezv 0:bb887e759db2 707 IRDA=7;
mcalvarezv 0:bb887e759db2 708 lcd.locate(8,1);
mcalvarezv 0:bb887e759db2 709 lcd.printf("%d",IRDA);
mcalvarezv 0:bb887e759db2 710 goto seguir2;
mcalvarezv 0:bb887e759db2 711 }else if(!strcmp(cadena,set)){
mcalvarezv 0:bb887e759db2 712 goto lop3;
mcalvarezv 0:bb887e759db2 713 }
mcalvarezv 0:bb887e759db2 714 lop3: Lugar=2;
mcalvarezv 0:bb887e759db2 715 irda_en=0;
mcalvarezv 0:bb887e759db2 716 lcd.cls();
mcalvarezv 0:bb887e759db2 717 break;
mcalvarezv 0:bb887e759db2 718 }
mcalvarezv 0:bb887e759db2 719 }
mcalvarezv 0:bb887e759db2 720 }