Reloj con alarma y snooze

Dependencies:   RTC-DS1307-Modificada TextLCD mbed QEI

/media/uploads/Susanaranjo/img_20160519_141804.jpg

Committer:
Susanaranjo
Date:
Thu May 19 19:18:49 2016 +0000
Revision:
2:32f3a407a8ea
Parent:
0:1c2ae7e04432
Alarma con Snooze y encoder

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Susanaranjo 0:1c2ae7e04432 1 #include "mbed.h"
Susanaranjo 0:1c2ae7e04432 2 #include "Rtc_Ds1307.h"
Susanaranjo 0:1c2ae7e04432 3 #include "TextLCD.h"
Susanaranjo 2:32f3a407a8ea 4 #include "QEI.h"
Susanaranjo 0:1c2ae7e04432 5
Susanaranjo 0:1c2ae7e04432 6 //Configuración de la pantalla
Susanaranjo 0:1c2ae7e04432 7 TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2); //Rs, E, d4, d5, d6, d7
Susanaranjo 0:1c2ae7e04432 8
Susanaranjo 0:1c2ae7e04432 9 //Configuración del reloj
Susanaranjo 0:1c2ae7e04432 10 Rtc_Ds1307 rtc(PTE0, PTE1); // SDA, SCL
Susanaranjo 0:1c2ae7e04432 11
Susanaranjo 0:1c2ae7e04432 12 //Configuración del puerto
Susanaranjo 0:1c2ae7e04432 13 Serial pc(USBTX, USBRX, "pc");
Susanaranjo 0:1c2ae7e04432 14
Susanaranjo 2:32f3a407a8ea 15 //Configuración del encoder
Susanaranjo 2:32f3a407a8ea 16 QEI encoder(PTD5, PTD0, NC,624);
Susanaranjo 2:32f3a407a8ea 17
Susanaranjo 0:1c2ae7e04432 18 DigitalIn alarma(PTC12);
Susanaranjo 0:1c2ae7e04432 19 DigitalIn snooze(PTC13);
Susanaranjo 2:32f3a407a8ea 20 DigitalIn alarmaE(PTC16);
Susanaranjo 0:1c2ae7e04432 21 PwmOut speaker(PTA13);
Susanaranjo 0:1c2ae7e04432 22
Susanaranjo 0:1c2ae7e04432 23
Susanaranjo 0:1c2ae7e04432 24 char buffer[128];
Susanaranjo 0:1c2ae7e04432 25 int readptr = 0;
Susanaranjo 0:1c2ae7e04432 26 int hora=0;
Susanaranjo 2:32f3a407a8ea 27 int hora2=0;
Susanaranjo 0:1c2ae7e04432 28 int minutos=0;
Susanaranjo 2:32f3a407a8ea 29 int minutos2=0;
Susanaranjo 0:1c2ae7e04432 30 int seg=0;
Susanaranjo 2:32f3a407a8ea 31 int seg2=0;
Susanaranjo 0:1c2ae7e04432 32 int mes=0;
Susanaranjo 2:32f3a407a8ea 33 int mes2=0;
Susanaranjo 0:1c2ae7e04432 34 int fecha=0;
Susanaranjo 2:32f3a407a8ea 35 int fecha2=0;
Susanaranjo 0:1c2ae7e04432 36 int anno=0;
Susanaranjo 2:32f3a407a8ea 37 int anno2=0;
Susanaranjo 0:1c2ae7e04432 38 int pulsador;
Susanaranjo 0:1c2ae7e04432 39 int pulsador2;
Susanaranjo 0:1c2ae7e04432 40 int a=0;
Susanaranjo 2:32f3a407a8ea 41 int b=0;
Susanaranjo 2:32f3a407a8ea 42 int pulsos=0;
Susanaranjo 2:32f3a407a8ea 43 int diferencia=0;
Susanaranjo 2:32f3a407a8ea 44 int alarma2=0;
Susanaranjo 0:1c2ae7e04432 45
Susanaranjo 0:1c2ae7e04432 46
Susanaranjo 0:1c2ae7e04432 47 int main()
Susanaranjo 0:1c2ae7e04432 48 {
Susanaranjo 0:1c2ae7e04432 49 char c;
Susanaranjo 0:1c2ae7e04432 50 Rtc_Ds1307::Time_rtc tm = {};
Susanaranjo 0:1c2ae7e04432 51
Susanaranjo 0:1c2ae7e04432 52 lcd.cls();
Susanaranjo 0:1c2ae7e04432 53 lcd.locate(0,0);
Susanaranjo 0:1c2ae7e04432 54 lcd.printf("Configurando");
Susanaranjo 0:1c2ae7e04432 55 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 56 lcd.printf("el reloj");
Susanaranjo 0:1c2ae7e04432 57
Susanaranjo 0:1c2ae7e04432 58 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 59 pc.printf("* Configurar el reloj *\n");
Susanaranjo 0:1c2ae7e04432 60 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 61
Susanaranjo 0:1c2ae7e04432 62 while(1) {
Susanaranjo 0:1c2ae7e04432 63
Susanaranjo 0:1c2ae7e04432 64
Susanaranjo 0:1c2ae7e04432 65 pc.printf("Ingrese la fecha (entre 1 y 31)");
Susanaranjo 0:1c2ae7e04432 66 pc.scanf("%d", &tm.date);
Susanaranjo 0:1c2ae7e04432 67 pc.printf("Ingrese el mes (entre 1 y 12)");
Susanaranjo 0:1c2ae7e04432 68 pc.scanf("%d", &tm.mon);
Susanaranjo 0:1c2ae7e04432 69 pc.printf("Ingrese el anno (ejemplo: 2016)");
Susanaranjo 0:1c2ae7e04432 70 pc.scanf("%d", &tm.year);
Susanaranjo 0:1c2ae7e04432 71 pc.printf("Ingrese la hora (entre 0 y 23)");
Susanaranjo 0:1c2ae7e04432 72 pc.scanf("%d", &tm.hour);
Susanaranjo 0:1c2ae7e04432 73 pc.printf("Ingrese los minutos (entre 0 y 59)");
Susanaranjo 0:1c2ae7e04432 74 pc.scanf("%d", &tm.min);
Susanaranjo 0:1c2ae7e04432 75 pc.printf("Ingrese los segundos (entre 0 y 59)");
Susanaranjo 0:1c2ae7e04432 76 pc.scanf("%d", &tm.sec);
Susanaranjo 0:1c2ae7e04432 77 pc.printf("Ingrese el dia (siendo Domingo=1)");
Susanaranjo 0:1c2ae7e04432 78 pc.scanf("%d", &tm.wday);
Susanaranjo 0:1c2ae7e04432 79 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 80 pc.printf("Configurando el reloj\n");
Susanaranjo 0:1c2ae7e04432 81
Susanaranjo 0:1c2ae7e04432 82
Susanaranjo 0:1c2ae7e04432 83 while(pc.readable()) {
Susanaranjo 0:1c2ae7e04432 84 pc.getc();
Susanaranjo 0:1c2ae7e04432 85 rtc.setTime(tm, false, false);}
Susanaranjo 0:1c2ae7e04432 86
Susanaranjo 0:1c2ae7e04432 87 wait_ms(200);
Susanaranjo 0:1c2ae7e04432 88
Susanaranjo 0:1c2ae7e04432 89 pc.printf("Inicializando el reloj\n");
Susanaranjo 0:1c2ae7e04432 90 rtc.startClock();
Susanaranjo 0:1c2ae7e04432 91
Susanaranjo 0:1c2ae7e04432 92 wait_ms(200);
Susanaranjo 0:1c2ae7e04432 93
Susanaranjo 0:1c2ae7e04432 94 pc.printf("Leyendo el reloj\n");
Susanaranjo 0:1c2ae7e04432 95
Susanaranjo 0:1c2ae7e04432 96 loop1: if (rtc.getTime(tm) ) {
Susanaranjo 0:1c2ae7e04432 97 pulsador=alarma.read();
Susanaranjo 0:1c2ae7e04432 98
Susanaranjo 0:1c2ae7e04432 99 a=(abs(tm.hour-hora))+(abs(tm.min-minutos))+(abs(tm.sec-seg))+(abs(tm.mon-mes))+(abs(tm.date-fecha))+(abs(tm.year-anno)); // Compara la hora y la fecha actual con la fecha y hora de la alarma
Susanaranjo 2:32f3a407a8ea 100 b=(abs(tm.hour-hora2))+(abs(tm.min-minutos2))+(abs(tm.sec-seg2))+(abs(tm.mon-mes2))+(abs(tm.date-fecha2))+(abs(tm.year-anno2)); // Compara la hora y la fecha actual con la fecha y hora de la alarma
Susanaranjo 0:1c2ae7e04432 101
Susanaranjo 0:1c2ae7e04432 102 //pc.printf("%d\n",a);
Susanaranjo 0:1c2ae7e04432 103
Susanaranjo 2:32f3a407a8ea 104 if (a*b==0)
Susanaranjo 0:1c2ae7e04432 105 {
Susanaranjo 0:1c2ae7e04432 106 loop3: lcd.cls();
Susanaranjo 0:1c2ae7e04432 107 lcd.printf("ALARMA");
Susanaranjo 0:1c2ae7e04432 108 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 109 pc.printf("* ALARMA *\n");
Susanaranjo 0:1c2ae7e04432 110 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 111 speaker.period(1.0/500.0);
Susanaranjo 0:1c2ae7e04432 112 speaker=0.5;
Susanaranjo 0:1c2ae7e04432 113
Susanaranjo 0:1c2ae7e04432 114 loop4: pulsador2=snooze.read(); // Estado del pulsador para detener o posponer la alarma
Susanaranjo 0:1c2ae7e04432 115
Susanaranjo 0:1c2ae7e04432 116 if (pulsador2==0){
Susanaranjo 0:1c2ae7e04432 117 speaker=0.0;
Susanaranjo 0:1c2ae7e04432 118 pc.printf("Pulsar 5 segundos para detener\n");
Susanaranjo 0:1c2ae7e04432 119 lcd.cls();
Susanaranjo 0:1c2ae7e04432 120 lcd.printf("Mantenga pulsado");
Susanaranjo 0:1c2ae7e04432 121 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 122 lcd.printf("para detener");
Susanaranjo 0:1c2ae7e04432 123 wait(5);
Susanaranjo 0:1c2ae7e04432 124 pulsador2=snooze.read();
Susanaranjo 0:1c2ae7e04432 125 if (pulsador2==0){ // Si despues de 5 segundos el pulsador todavia está oprimido, se detiene la alarma
Susanaranjo 0:1c2ae7e04432 126 lcd.cls();
Susanaranjo 0:1c2ae7e04432 127 lcd.printf("Alarma");
Susanaranjo 0:1c2ae7e04432 128 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 129 lcd.printf("desactivada");
Susanaranjo 0:1c2ae7e04432 130 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 131 pc.printf("* Alarma desactivada *\n");
Susanaranjo 0:1c2ae7e04432 132 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 133 wait(2);
Susanaranjo 0:1c2ae7e04432 134 goto loop1;
Susanaranjo 0:1c2ae7e04432 135 }else{ // Si el pulsador ya no está oprimido, se pospone la alarma un minuto
Susanaranjo 0:1c2ae7e04432 136 lcd.cls();
Susanaranjo 0:1c2ae7e04432 137 lcd.printf("Snooze");
Susanaranjo 0:1c2ae7e04432 138 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 139 pc.printf("* Snooze *\n");
Susanaranjo 0:1c2ae7e04432 140 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 141 wait(60);
Susanaranjo 0:1c2ae7e04432 142 goto loop3;
Susanaranjo 0:1c2ae7e04432 143 }
Susanaranjo 0:1c2ae7e04432 144
Susanaranjo 0:1c2ae7e04432 145 }else {
Susanaranjo 0:1c2ae7e04432 146 goto loop4; }
Susanaranjo 0:1c2ae7e04432 147 }
Susanaranjo 0:1c2ae7e04432 148
Susanaranjo 0:1c2ae7e04432 149 //pc.printf("La hora actual es: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
Susanaranjo 0:1c2ae7e04432 150 //pc.printf("La fecha actual es : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
Susanaranjo 0:1c2ae7e04432 151
Susanaranjo 0:1c2ae7e04432 152 else if (pulsador==0) {
Susanaranjo 0:1c2ae7e04432 153 lcd.cls();
Susanaranjo 0:1c2ae7e04432 154 lcd.printf("Ver/Configurar");
Susanaranjo 0:1c2ae7e04432 155 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 156 lcd.printf("alarma");
Susanaranjo 0:1c2ae7e04432 157 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 158 pc.printf("* alarma - configurar alarma *\n");
Susanaranjo 0:1c2ae7e04432 159 pc.printf("* ver - ver alarma *\n");
Susanaranjo 0:1c2ae7e04432 160 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 161
Susanaranjo 0:1c2ae7e04432 162 loop2: readptr = 0;
Susanaranjo 0:1c2ae7e04432 163
Susanaranjo 0:1c2ae7e04432 164 //Obtengo la cadena de caracteres correspondiente a la orden
Susanaranjo 0:1c2ae7e04432 165
Susanaranjo 0:1c2ae7e04432 166 while( (c = pc.getc()) != '\n') {
Susanaranjo 0:1c2ae7e04432 167 buffer[readptr++] = c; }
Susanaranjo 0:1c2ae7e04432 168 buffer[readptr++] = 0;
Susanaranjo 0:1c2ae7e04432 169
Susanaranjo 2:32f3a407a8ea 170 // Configurar alarma desde el computador
Susanaranjo 0:1c2ae7e04432 171 if (strncmp(buffer, "alarma", 6) == 0) {
Susanaranjo 0:1c2ae7e04432 172
Susanaranjo 0:1c2ae7e04432 173 lcd.cls();
Susanaranjo 0:1c2ae7e04432 174 lcd.printf("Configurando");
Susanaranjo 0:1c2ae7e04432 175 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 176 lcd.printf("alarma");
Susanaranjo 0:1c2ae7e04432 177 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 178 pc.printf("* Nueva alarma *\n");
Susanaranjo 0:1c2ae7e04432 179 pc.printf("Fecha de la alarma (0..31)");
Susanaranjo 0:1c2ae7e04432 180 pc.scanf("%d", &fecha);
Susanaranjo 0:1c2ae7e04432 181 pc.printf("Mes de la alarma (1..12)");
Susanaranjo 0:1c2ae7e04432 182 pc.scanf("%d", &mes);
Susanaranjo 0:1c2ae7e04432 183 pc.printf("Anno de la alarma");
Susanaranjo 0:1c2ae7e04432 184 pc.scanf("%d", &anno);
Susanaranjo 0:1c2ae7e04432 185 pc.printf("Hora de la alarma (0..23)");
Susanaranjo 0:1c2ae7e04432 186 pc.scanf("%d", &hora);
Susanaranjo 0:1c2ae7e04432 187 pc.printf("Minutos de la alarma (0..59)");
Susanaranjo 0:1c2ae7e04432 188 pc.scanf("%d",&minutos);
Susanaranjo 0:1c2ae7e04432 189 pc.printf("Segundos de la alarma (0..59)");
Susanaranjo 0:1c2ae7e04432 190 pc.scanf("%d", &seg);
Susanaranjo 0:1c2ae7e04432 191 pc.printf("* Fin de la configuracion *\n");
Susanaranjo 0:1c2ae7e04432 192 pc.printf("*************************************\n");
Susanaranjo 0:1c2ae7e04432 193 lcd.cls();
Susanaranjo 0:1c2ae7e04432 194 lcd.printf("Fin de la configuracion");
Susanaranjo 0:1c2ae7e04432 195 wait_ms(500);
Susanaranjo 0:1c2ae7e04432 196 goto loop1;
Susanaranjo 0:1c2ae7e04432 197
Susanaranjo 0:1c2ae7e04432 198 } else if (strncmp(buffer, "ver", 3) == 0) {
Susanaranjo 0:1c2ae7e04432 199
Susanaranjo 0:1c2ae7e04432 200 if(anno==0){
Susanaranjo 2:32f3a407a8ea 201 pc.printf("No hay alarma 1\n");
Susanaranjo 0:1c2ae7e04432 202 lcd.cls();
Susanaranjo 2:32f3a407a8ea 203 lcd.printf("No hay alarma 1");
Susanaranjo 0:1c2ae7e04432 204 wait_ms(500);
Susanaranjo 0:1c2ae7e04432 205 }else{
Susanaranjo 0:1c2ae7e04432 206 pc.printf("Hora de la alarma : %02d:%02d:%02d\n", hora, minutos, seg);
Susanaranjo 0:1c2ae7e04432 207 pc.printf("Fecha de la alarma : %02d/%02d/%04d\n", fecha, mes, anno);
Susanaranjo 0:1c2ae7e04432 208 lcd.cls();
Susanaranjo 2:32f3a407a8ea 209 lcd.printf("Alarma 1");
Susanaranjo 2:32f3a407a8ea 210 wait (1);
Susanaranjo 0:1c2ae7e04432 211 lcd.printf("%02d:%02d:%02d", hora, minutos, seg);
Susanaranjo 0:1c2ae7e04432 212 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 213 lcd.printf("%02d:%02d:%02d", fecha, mes, anno);
Susanaranjo 0:1c2ae7e04432 214 wait(2);}
Susanaranjo 0:1c2ae7e04432 215
Susanaranjo 2:32f3a407a8ea 216 if(alarma2==0){
Susanaranjo 2:32f3a407a8ea 217 pc.printf("No hay alarma 2\n");
Susanaranjo 2:32f3a407a8ea 218 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 219 lcd.printf("No hay alarma 2");
Susanaranjo 2:32f3a407a8ea 220 wait_ms(500);
Susanaranjo 2:32f3a407a8ea 221 }else{
Susanaranjo 2:32f3a407a8ea 222 pc.printf("Hora de la alarma 2 : %02d:%02d:%02d\n", hora2, minutos2, seg2);
Susanaranjo 2:32f3a407a8ea 223 pc.printf("Fecha de la alarma 2: %02d/%02d/%04d\n", fecha2, mes2, anno2);
Susanaranjo 2:32f3a407a8ea 224 lcd.cls();
Susanaranjo 2:32f3a407a8ea 225 lcd.printf("Alarma 2");
Susanaranjo 2:32f3a407a8ea 226 wait (1);
Susanaranjo 2:32f3a407a8ea 227 lcd.printf("%02d:%02d:%02d", hora2, minutos2, seg2);
Susanaranjo 2:32f3a407a8ea 228 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 229 lcd.printf("%02d:%02d:%02d", fecha2, mes2, anno2);
Susanaranjo 2:32f3a407a8ea 230 wait(2);}
Susanaranjo 2:32f3a407a8ea 231
Susanaranjo 2:32f3a407a8ea 232
Susanaranjo 0:1c2ae7e04432 233 goto loop1;
Susanaranjo 0:1c2ae7e04432 234
Susanaranjo 0:1c2ae7e04432 235 } else {
Susanaranjo 0:1c2ae7e04432 236 goto loop2;
Susanaranjo 0:1c2ae7e04432 237 }
Susanaranjo 0:1c2ae7e04432 238
Susanaranjo 0:1c2ae7e04432 239
Susanaranjo 2:32f3a407a8ea 240 }
Susanaranjo 2:32f3a407a8ea 241
Susanaranjo 2:32f3a407a8ea 242 // Configura alarma con encoder
Susanaranjo 2:32f3a407a8ea 243 else if (alarmaE==0){
Susanaranjo 2:32f3a407a8ea 244 pc.printf("* Configurar alarma con encoder *\n");
Susanaranjo 2:32f3a407a8ea 245 lcd.cls();
Susanaranjo 2:32f3a407a8ea 246 lcd.printf("Alarma con");
Susanaranjo 2:32f3a407a8ea 247 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 248 lcd.printf("encoder");
Susanaranjo 2:32f3a407a8ea 249 wait (1);
Susanaranjo 2:32f3a407a8ea 250
Susanaranjo 2:32f3a407a8ea 251
Susanaranjo 2:32f3a407a8ea 252 //Configuración fecha
Susanaranjo 2:32f3a407a8ea 253
Susanaranjo 2:32f3a407a8ea 254 pc.printf("Fecha de la alarma:\n");
Susanaranjo 2:32f3a407a8ea 255 lcd.cls();
Susanaranjo 2:32f3a407a8ea 256 lcd.printf("Fecha");
Susanaranjo 2:32f3a407a8ea 257
Susanaranjo 2:32f3a407a8ea 258 loop5: diferencia=encoder.getPulses()-pulsos;
Susanaranjo 2:32f3a407a8ea 259 pulsos=encoder.getPulses();
Susanaranjo 2:32f3a407a8ea 260 if (!alarmaE){
Susanaranjo 2:32f3a407a8ea 261 pc.printf("\n");
Susanaranjo 2:32f3a407a8ea 262 pc.printf("Mes de la alarma:\n");
Susanaranjo 2:32f3a407a8ea 263 lcd.cls();
Susanaranjo 2:32f3a407a8ea 264 lcd.printf("Mes");
Susanaranjo 2:32f3a407a8ea 265 diferencia=0;
Susanaranjo 2:32f3a407a8ea 266 pulsos=0;
Susanaranjo 2:32f3a407a8ea 267 wait(1);
Susanaranjo 2:32f3a407a8ea 268 goto loop6;
Susanaranjo 2:32f3a407a8ea 269 }else{
Susanaranjo 2:32f3a407a8ea 270 if (diferencia==0){
Susanaranjo 2:32f3a407a8ea 271 wait(0.1);
Susanaranjo 2:32f3a407a8ea 272 goto loop5;
Susanaranjo 2:32f3a407a8ea 273 }else if (diferencia+fecha2>=31){
Susanaranjo 2:32f3a407a8ea 274 fecha2=31;
Susanaranjo 2:32f3a407a8ea 275 pc.printf("%02d\n", fecha2);
Susanaranjo 2:32f3a407a8ea 276 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 277 lcd.printf("%02d",fecha2);
Susanaranjo 2:32f3a407a8ea 278 wait(0.1);
Susanaranjo 2:32f3a407a8ea 279 goto loop5;
Susanaranjo 2:32f3a407a8ea 280 }else if(diferencia+fecha2<1) {
Susanaranjo 2:32f3a407a8ea 281 fecha2=1;
Susanaranjo 2:32f3a407a8ea 282 pc.printf("%02d\n", fecha2);
Susanaranjo 2:32f3a407a8ea 283 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 284 lcd.printf("%02d",fecha2);
Susanaranjo 2:32f3a407a8ea 285 wait(0.1);
Susanaranjo 2:32f3a407a8ea 286 goto loop5;
Susanaranjo 2:32f3a407a8ea 287 }else{
Susanaranjo 2:32f3a407a8ea 288 fecha2+=diferencia;
Susanaranjo 2:32f3a407a8ea 289 pc.printf("%02d\n", fecha2);
Susanaranjo 2:32f3a407a8ea 290 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 291 lcd.printf("%02d",fecha2);
Susanaranjo 2:32f3a407a8ea 292 wait(0.1);
Susanaranjo 2:32f3a407a8ea 293 goto loop5;
Susanaranjo 2:32f3a407a8ea 294 }}
Susanaranjo 2:32f3a407a8ea 295
Susanaranjo 2:32f3a407a8ea 296
Susanaranjo 2:32f3a407a8ea 297
Susanaranjo 2:32f3a407a8ea 298 //Configuración mes
Susanaranjo 2:32f3a407a8ea 299
Susanaranjo 2:32f3a407a8ea 300
Susanaranjo 2:32f3a407a8ea 301 loop6: diferencia=encoder.getPulses()-pulsos;
Susanaranjo 2:32f3a407a8ea 302 pulsos=encoder.getPulses();
Susanaranjo 2:32f3a407a8ea 303 if (!alarmaE){
Susanaranjo 2:32f3a407a8ea 304 pc.printf("\n");
Susanaranjo 2:32f3a407a8ea 305 pc.printf("Anno de la alarma:\n");
Susanaranjo 2:32f3a407a8ea 306 lcd.cls();
Susanaranjo 2:32f3a407a8ea 307 lcd.printf("Anno");
Susanaranjo 2:32f3a407a8ea 308 diferencia=0;
Susanaranjo 2:32f3a407a8ea 309 pulsos=0;
Susanaranjo 2:32f3a407a8ea 310 wait(1);
Susanaranjo 2:32f3a407a8ea 311 goto loop7;
Susanaranjo 2:32f3a407a8ea 312 }else{
Susanaranjo 2:32f3a407a8ea 313 if (diferencia==0){
Susanaranjo 2:32f3a407a8ea 314 wait(0.1);
Susanaranjo 2:32f3a407a8ea 315 goto loop6;
Susanaranjo 2:32f3a407a8ea 316 }else if (diferencia+mes2>=12){
Susanaranjo 2:32f3a407a8ea 317 mes2=12;
Susanaranjo 2:32f3a407a8ea 318 pc.printf("%02d\n", mes2);
Susanaranjo 2:32f3a407a8ea 319 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 320 lcd.printf("%02d",mes2);
Susanaranjo 2:32f3a407a8ea 321 wait(0.1);
Susanaranjo 2:32f3a407a8ea 322 goto loop6;
Susanaranjo 2:32f3a407a8ea 323 }else if(diferencia+mes2<1) {
Susanaranjo 2:32f3a407a8ea 324 mes2=1;
Susanaranjo 2:32f3a407a8ea 325 pc.printf("%02d\n", mes2);
Susanaranjo 2:32f3a407a8ea 326 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 327 lcd.printf("%02d",mes2);
Susanaranjo 2:32f3a407a8ea 328 wait(0.1);
Susanaranjo 2:32f3a407a8ea 329 goto loop6;
Susanaranjo 2:32f3a407a8ea 330 }else{
Susanaranjo 2:32f3a407a8ea 331 mes2+=diferencia;
Susanaranjo 2:32f3a407a8ea 332 pc.printf("%02d\n", mes2);
Susanaranjo 2:32f3a407a8ea 333 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 334 lcd.printf("%02d",mes2);
Susanaranjo 2:32f3a407a8ea 335 wait(0.1);
Susanaranjo 2:32f3a407a8ea 336 goto loop6 ;
Susanaranjo 2:32f3a407a8ea 337 }}
Susanaranjo 2:32f3a407a8ea 338
Susanaranjo 2:32f3a407a8ea 339
Susanaranjo 2:32f3a407a8ea 340
Susanaranjo 2:32f3a407a8ea 341 //Configuración año
Susanaranjo 2:32f3a407a8ea 342 loop7: diferencia=encoder.getPulses()-pulsos;
Susanaranjo 2:32f3a407a8ea 343 pulsos=encoder.getPulses();
Susanaranjo 2:32f3a407a8ea 344 if (!alarmaE){
Susanaranjo 2:32f3a407a8ea 345 pc.printf("\n");
Susanaranjo 2:32f3a407a8ea 346 pc.printf("Hora de la alarma:\n");
Susanaranjo 2:32f3a407a8ea 347 lcd.cls();
Susanaranjo 2:32f3a407a8ea 348 lcd.printf("Hora");
Susanaranjo 2:32f3a407a8ea 349 diferencia=0;
Susanaranjo 2:32f3a407a8ea 350 pulsos=0;
Susanaranjo 2:32f3a407a8ea 351 wait(1);
Susanaranjo 2:32f3a407a8ea 352 goto loop8;
Susanaranjo 2:32f3a407a8ea 353 }else{
Susanaranjo 2:32f3a407a8ea 354 if (diferencia==0){
Susanaranjo 2:32f3a407a8ea 355 wait(0.1);
Susanaranjo 2:32f3a407a8ea 356 goto loop7;
Susanaranjo 2:32f3a407a8ea 357 }else if (diferencia+anno2>=2255){
Susanaranjo 2:32f3a407a8ea 358 anno2=2255;
Susanaranjo 2:32f3a407a8ea 359 pc.printf("%04d\n", anno2);
Susanaranjo 2:32f3a407a8ea 360 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 361 lcd.printf("%04d", anno2);
Susanaranjo 2:32f3a407a8ea 362 wait(0.1);
Susanaranjo 2:32f3a407a8ea 363 goto loop7;
Susanaranjo 2:32f3a407a8ea 364 }else if(diferencia+anno2<2000) {
Susanaranjo 2:32f3a407a8ea 365 anno2=2000;
Susanaranjo 2:32f3a407a8ea 366 pc.printf("%04d\n", anno2);
Susanaranjo 2:32f3a407a8ea 367 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 368 lcd.printf("%04d",anno2);
Susanaranjo 2:32f3a407a8ea 369 wait(0.1);
Susanaranjo 2:32f3a407a8ea 370 goto loop7;
Susanaranjo 2:32f3a407a8ea 371 }else{
Susanaranjo 2:32f3a407a8ea 372 anno2+=diferencia;
Susanaranjo 2:32f3a407a8ea 373 pc.printf("%04d\n", anno2);
Susanaranjo 2:32f3a407a8ea 374 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 375 lcd.printf("%04d",anno2);
Susanaranjo 2:32f3a407a8ea 376 wait(0.1);
Susanaranjo 2:32f3a407a8ea 377 goto loop7 ;
Susanaranjo 2:32f3a407a8ea 378 }}
Susanaranjo 2:32f3a407a8ea 379
Susanaranjo 2:32f3a407a8ea 380
Susanaranjo 2:32f3a407a8ea 381 //Configuración hora
Susanaranjo 2:32f3a407a8ea 382
Susanaranjo 2:32f3a407a8ea 383
Susanaranjo 2:32f3a407a8ea 384 loop8: diferencia=encoder.getPulses()-pulsos;
Susanaranjo 2:32f3a407a8ea 385 pulsos=encoder.getPulses();
Susanaranjo 2:32f3a407a8ea 386 if (!alarmaE){
Susanaranjo 2:32f3a407a8ea 387 pc.printf("\n");
Susanaranjo 2:32f3a407a8ea 388 pc.printf("Minutos de la alarma:\n");
Susanaranjo 2:32f3a407a8ea 389 lcd.cls();
Susanaranjo 2:32f3a407a8ea 390 lcd.printf("Minutos");
Susanaranjo 2:32f3a407a8ea 391 diferencia=0;
Susanaranjo 2:32f3a407a8ea 392 pulsos=0;
Susanaranjo 2:32f3a407a8ea 393 wait(1);
Susanaranjo 2:32f3a407a8ea 394 goto loop9;
Susanaranjo 2:32f3a407a8ea 395 }else{
Susanaranjo 2:32f3a407a8ea 396 if (diferencia==0){
Susanaranjo 2:32f3a407a8ea 397 wait(0.1);
Susanaranjo 2:32f3a407a8ea 398 goto loop8;
Susanaranjo 2:32f3a407a8ea 399 }else if (diferencia+hora2>=23){
Susanaranjo 2:32f3a407a8ea 400 hora2=23;
Susanaranjo 2:32f3a407a8ea 401 pc.printf("%02d\n", hora2);
Susanaranjo 2:32f3a407a8ea 402 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 403 lcd.printf("%02d", hora2);
Susanaranjo 2:32f3a407a8ea 404 wait(0.1);
Susanaranjo 2:32f3a407a8ea 405 goto loop8;
Susanaranjo 2:32f3a407a8ea 406 }else if(diferencia+hora2<0) {
Susanaranjo 2:32f3a407a8ea 407 hora2=0;
Susanaranjo 2:32f3a407a8ea 408 pc.printf("%02d\n", hora2);
Susanaranjo 2:32f3a407a8ea 409 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 410 lcd.printf("%02d",hora2);
Susanaranjo 2:32f3a407a8ea 411 wait(0.1);
Susanaranjo 2:32f3a407a8ea 412 goto loop8;
Susanaranjo 2:32f3a407a8ea 413 }else{
Susanaranjo 2:32f3a407a8ea 414 hora2+=diferencia;
Susanaranjo 2:32f3a407a8ea 415 pc.printf("%02d\n", hora2);
Susanaranjo 2:32f3a407a8ea 416 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 417 lcd.printf("%02d",hora2);
Susanaranjo 2:32f3a407a8ea 418 wait(0.1);
Susanaranjo 2:32f3a407a8ea 419 goto loop8 ;
Susanaranjo 2:32f3a407a8ea 420 }}
Susanaranjo 2:32f3a407a8ea 421
Susanaranjo 2:32f3a407a8ea 422 //Configuración minutos
Susanaranjo 2:32f3a407a8ea 423 loop9: diferencia=encoder.getPulses()-pulsos;
Susanaranjo 2:32f3a407a8ea 424 pulsos=encoder.getPulses();
Susanaranjo 2:32f3a407a8ea 425 if (!alarmaE){
Susanaranjo 2:32f3a407a8ea 426 pc.printf("\n");
Susanaranjo 2:32f3a407a8ea 427 pc.printf("Segundos de la alarma:\n");
Susanaranjo 2:32f3a407a8ea 428 lcd.cls();
Susanaranjo 2:32f3a407a8ea 429 lcd.printf("Segundos");
Susanaranjo 2:32f3a407a8ea 430 diferencia=0;
Susanaranjo 2:32f3a407a8ea 431 pulsos=0;
Susanaranjo 2:32f3a407a8ea 432 wait(1);
Susanaranjo 2:32f3a407a8ea 433 goto loop10;
Susanaranjo 2:32f3a407a8ea 434 }else{
Susanaranjo 2:32f3a407a8ea 435 if (diferencia==0){
Susanaranjo 2:32f3a407a8ea 436 wait(0.1);
Susanaranjo 2:32f3a407a8ea 437 goto loop9;
Susanaranjo 2:32f3a407a8ea 438 }else if (diferencia+minutos2>=59){
Susanaranjo 2:32f3a407a8ea 439 minutos2=59;
Susanaranjo 2:32f3a407a8ea 440 pc.printf("%02d\n", minutos2);
Susanaranjo 2:32f3a407a8ea 441 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 442 lcd.printf("%02d", minutos2);
Susanaranjo 2:32f3a407a8ea 443 wait(0.1);
Susanaranjo 2:32f3a407a8ea 444 goto loop9;
Susanaranjo 2:32f3a407a8ea 445 }else if(diferencia+minutos2<0) {
Susanaranjo 2:32f3a407a8ea 446 minutos2=0;
Susanaranjo 2:32f3a407a8ea 447 pc.printf("%02d\n", minutos2);
Susanaranjo 2:32f3a407a8ea 448 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 449 lcd.printf("%02d",minutos2);
Susanaranjo 2:32f3a407a8ea 450 wait(0.1);
Susanaranjo 2:32f3a407a8ea 451 goto loop9;
Susanaranjo 2:32f3a407a8ea 452 }else{
Susanaranjo 2:32f3a407a8ea 453 minutos2+=diferencia;
Susanaranjo 2:32f3a407a8ea 454 pc.printf("%02d\n", minutos2);
Susanaranjo 2:32f3a407a8ea 455 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 456 lcd.printf("%02d",minutos2);
Susanaranjo 2:32f3a407a8ea 457 wait(0.1);
Susanaranjo 2:32f3a407a8ea 458 goto loop9 ;
Susanaranjo 2:32f3a407a8ea 459 }}
Susanaranjo 2:32f3a407a8ea 460
Susanaranjo 2:32f3a407a8ea 461 //Configuración segundos
Susanaranjo 2:32f3a407a8ea 462
Susanaranjo 2:32f3a407a8ea 463 loop10: diferencia=encoder.getPulses()-pulsos;
Susanaranjo 2:32f3a407a8ea 464 pulsos=encoder.getPulses();
Susanaranjo 2:32f3a407a8ea 465 if (!alarmaE){
Susanaranjo 2:32f3a407a8ea 466 pc.printf("\n");
Susanaranjo 2:32f3a407a8ea 467 pc.printf("* Fin de la configuracion *\n");
Susanaranjo 2:32f3a407a8ea 468 lcd.cls();
Susanaranjo 2:32f3a407a8ea 469 lcd.printf("Fin de la configuracion");
Susanaranjo 2:32f3a407a8ea 470 diferencia=0;
Susanaranjo 2:32f3a407a8ea 471 pulsos=0;
Susanaranjo 2:32f3a407a8ea 472 alarma2=1;
Susanaranjo 2:32f3a407a8ea 473 wait(1);
Susanaranjo 2:32f3a407a8ea 474 goto loop1;
Susanaranjo 2:32f3a407a8ea 475 }else{
Susanaranjo 2:32f3a407a8ea 476 if (diferencia==0){
Susanaranjo 2:32f3a407a8ea 477 wait(0.1);
Susanaranjo 2:32f3a407a8ea 478 goto loop10;
Susanaranjo 2:32f3a407a8ea 479 }else if (diferencia+seg2>=59){
Susanaranjo 2:32f3a407a8ea 480 seg2=59;
Susanaranjo 2:32f3a407a8ea 481 pc.printf("%02d\n", seg2);
Susanaranjo 2:32f3a407a8ea 482 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 483 lcd.printf("%02d", seg2);
Susanaranjo 2:32f3a407a8ea 484 wait(0.1);
Susanaranjo 2:32f3a407a8ea 485 goto loop10;
Susanaranjo 2:32f3a407a8ea 486 }else if(diferencia+seg2<0) {
Susanaranjo 2:32f3a407a8ea 487 seg2=0;
Susanaranjo 2:32f3a407a8ea 488 pc.printf("%02d\n", seg2);
Susanaranjo 2:32f3a407a8ea 489 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 490 lcd.printf("%02d",seg2);
Susanaranjo 2:32f3a407a8ea 491 wait(0.1);
Susanaranjo 2:32f3a407a8ea 492 goto loop10;
Susanaranjo 2:32f3a407a8ea 493 }else{
Susanaranjo 2:32f3a407a8ea 494 seg2+=diferencia;
Susanaranjo 2:32f3a407a8ea 495 pc.printf("%02d\n", seg2);
Susanaranjo 2:32f3a407a8ea 496 lcd.locate(0,1);
Susanaranjo 2:32f3a407a8ea 497 lcd.printf("%02d",seg2);
Susanaranjo 2:32f3a407a8ea 498 wait(0.1);
Susanaranjo 2:32f3a407a8ea 499 goto loop10 ;
Susanaranjo 2:32f3a407a8ea 500 }}
Susanaranjo 2:32f3a407a8ea 501
Susanaranjo 2:32f3a407a8ea 502
Susanaranjo 2:32f3a407a8ea 503 }else {
Susanaranjo 0:1c2ae7e04432 504 //Actualizo la hora y la fecha
Susanaranjo 0:1c2ae7e04432 505 lcd.cls();
Susanaranjo 0:1c2ae7e04432 506 lcd.locate(0,0);
Susanaranjo 0:1c2ae7e04432 507 lcd.printf("%02d:%02d:%02d", tm.hour, tm.min, tm.sec);
Susanaranjo 0:1c2ae7e04432 508 lcd.locate(0,1);
Susanaranjo 0:1c2ae7e04432 509 lcd.printf("%s/%02d/%02d/%4d", rtc.weekdayToString(tm.wday), tm.date, tm.mon, tm.year);
Susanaranjo 0:1c2ae7e04432 510 wait_ms(200);
Susanaranjo 0:1c2ae7e04432 511 goto loop1;
Susanaranjo 2:32f3a407a8ea 512 }//else
Susanaranjo 0:1c2ae7e04432 513 }
Susanaranjo 0:1c2ae7e04432 514
Susanaranjo 0:1c2ae7e04432 515
Susanaranjo 0:1c2ae7e04432 516
Susanaranjo 2:32f3a407a8ea 517 }// while (1)
Susanaranjo 2:32f3a407a8ea 518 }// main