reloj de tiempo real con alarma aplazable

Dependencies:   Debounced RTC-DS1307 TextLCD mbed

Fork of Rtc_Ds1307_Sample by Henry Leinen

Committer:
Gregorio
Date:
Fri May 02 18:19:57 2014 +0000
Revision:
3:cc43cc1af11a
Parent:
2:3be003301107
Child:
4:242b6afb651e
Reloj de tiempo real con alarma aplazable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leihen 0:431183c5b136 1 #include "mbed.h"
leihen 0:431183c5b136 2 #include "Rtc_Ds1307.h"
Gregorio 3:cc43cc1af11a 3 #include "TextLCD.h"
Gregorio 3:cc43cc1af11a 4 #include "DebouncedIn.h"
leihen 0:431183c5b136 5
Gregorio 3:cc43cc1af11a 6 Rtc_Ds1307 rtc(PTE0, PTE1);
Gregorio 3:cc43cc1af11a 7 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5);
leihen 0:431183c5b136 8 Serial pc(USBTX, USBRX, "pc");
Gregorio 3:cc43cc1af11a 9 DebouncedIn button1(PTC12); //Incremental
Gregorio 3:cc43cc1af11a 10 DebouncedIn button2(PTC13); //Decremental
Gregorio 3:cc43cc1af11a 11 DebouncedIn button3(PTC16); //Cambiador de variable
Gregorio 3:cc43cc1af11a 12 DebouncedIn button4(PTC17); //Configurador de modo
Gregorio 3:cc43cc1af11a 13 PwmOut pw(PTA12); //se define la salida del pwm para hacer sonar la bocina
leihen 0:431183c5b136 14
Gregorio 3:cc43cc1af11a 15 //esta parte es para definir la frecuencia a la que suenan los botones
Gregorio 3:cc43cc1af11a 16 float Tdo=1/2093.005;
Gregorio 3:cc43cc1af11a 17 float Pdo=Tdo/2;
Gregorio 3:cc43cc1af11a 18 float Tre=1/2637.02;
Gregorio 3:cc43cc1af11a 19 float Pre=Tre/2;
Gregorio 3:cc43cc1af11a 20 float Tmi=1/3135.963;
Gregorio 3:cc43cc1af11a 21 float Pmi=Tmi/2;
Gregorio 3:cc43cc1af11a 22 float Tfa=1/4186.009;
Gregorio 3:cc43cc1af11a 23 float Pfa=Tfa/2;
Gregorio 3:cc43cc1af11a 24 //**********************************
Gregorio 3:cc43cc1af11a 25 int C1=0x0F; // comando para el lcd
Gregorio 3:cc43cc1af11a 26 //*************************************
Gregorio 3:cc43cc1af11a 27 int modo=0; //modo es para el boton 4. Indica: 0-mostrar datos, 1-configurar datos, 2-config alarma
Gregorio 3:cc43cc1af11a 28 int p=0; //p es el valor del boton 3 para la ubicación del modificador de variables 0-no aparece, 1-h, 2-m, 3-s, 4-D, 5-M, 6-Y.
Gregorio 3:cc43cc1af11a 29 //***************************************
Gregorio 3:cc43cc1af11a 30 //Definicion de variables para la configuración de alarma
Gregorio 3:cc43cc1af11a 31 int houral=0,minal=0,secal=0,dateal=1,monal=1,yearal=2014;
Gregorio 3:cc43cc1af11a 32 Timer t; // se define la variable t, contabilizadora del tiempo desde el inicio de la alarma
Gregorio 3:cc43cc1af11a 33 //*************************************
Gregorio 3:cc43cc1af11a 34 int main(){
Gregorio 3:cc43cc1af11a 35 //Definiciones del ds1307
leihen 2:3be003301107 36 Rtc_Ds1307::Time_rtc tm = {};
Gregorio 3:cc43cc1af11a 37 rtc.startClock();
Gregorio 3:cc43cc1af11a 38 //Comandos para la LCD
Gregorio 3:cc43cc1af11a 39 lcd.cls(); //borrar pantalla
Gregorio 3:cc43cc1af11a 40 lcd.writeCommand(C1);
Gregorio 3:cc43cc1af11a 41 //**************************************
Gregorio 3:cc43cc1af11a 42 while(1) { //Comienza el ciclo principal
Gregorio 3:cc43cc1af11a 43 //PARTE PARA EL MODO 0: MUESTRA DE HORA Y FECHA
Gregorio 3:cc43cc1af11a 44 if (modo==0) {
Gregorio 3:cc43cc1af11a 45 while(modo==0) {
Gregorio 3:cc43cc1af11a 46 rtc.getTime(tm);
Gregorio 3:cc43cc1af11a 47 lcd.locate(0,0); //las coordenadas van del 0 al 15 en la primera entrada, y de 0 a 1 en la segunda casilla
Gregorio 3:cc43cc1af11a 48 lcd.printf("Hora:%02d:%02d:%02d",tm.hour, tm.min, tm.sec); //%02d indica que la variable tiene maximo dos (2) digitos y si en algun caso solo tiene 1 digito,
Gregorio 3:cc43cc1af11a 49 lcd.locate(0,1); // el otro espacio que queda vacio debe llenarse con un cero (0)
Gregorio 3:cc43cc1af11a 50 lcd.printf("Fech:%02d/%02d/%04d", tm.date, tm.mon, tm.year);
Gregorio 3:cc43cc1af11a 51 //Verificación de hora alarma
Gregorio 3:cc43cc1af11a 52 if (tm.hour==houral && tm.min==minal && tm.sec==secal && tm.date==dateal && tm.mon==monal && tm.year==yearal) {
Gregorio 3:cc43cc1af11a 53 while(button1.falling() != 1) {
Gregorio 3:cc43cc1af11a 54 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 55 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 56 wait(0.5);
Gregorio 3:cc43cc1af11a 57 pw=0;
Gregorio 3:cc43cc1af11a 58 pw.period(Tre); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 59 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 60 wait(0.5);
Gregorio 3:cc43cc1af11a 61 pw=0;
Gregorio 3:cc43cc1af11a 62 pw.period(Tmi); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 63 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 64 wait(0.5);
Gregorio 3:cc43cc1af11a 65 pw=0;
Gregorio 3:cc43cc1af11a 66 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 67 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 68 wait(0.5);
Gregorio 3:cc43cc1af11a 69 pw=0;
Gregorio 3:cc43cc1af11a 70 }
Gregorio 3:cc43cc1af11a 71 t.start();//comienza a contar el tiempo despues de apagar la alarma, para reiniciarla a los 30 seg
Gregorio 3:cc43cc1af11a 72 if(t>=30){
Gregorio 3:cc43cc1af11a 73 t.stop();
Gregorio 3:cc43cc1af11a 74 while(button1.falling() != 1) {
Gregorio 3:cc43cc1af11a 75 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 76 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 77 wait(0.5);
Gregorio 3:cc43cc1af11a 78 pw=0;
Gregorio 3:cc43cc1af11a 79 pw.period(Tre); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 80 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 81 wait(0.5);
Gregorio 3:cc43cc1af11a 82 pw=0;
Gregorio 3:cc43cc1af11a 83 pw.period(Tmi); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 84 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 85 wait(0.5);
Gregorio 3:cc43cc1af11a 86 pw=0;
Gregorio 3:cc43cc1af11a 87 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 88 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 89 wait(0.5);
Gregorio 3:cc43cc1af11a 90 pw=0;
Gregorio 3:cc43cc1af11a 91 }
Gregorio 3:cc43cc1af11a 92 }
Gregorio 3:cc43cc1af11a 93 }
Gregorio 3:cc43cc1af11a 94
Gregorio 3:cc43cc1af11a 95 if (button4.falling()) {
Gregorio 3:cc43cc1af11a 96 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 97 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 98 wait(0.1);
Gregorio 3:cc43cc1af11a 99 pw=0;
Gregorio 3:cc43cc1af11a 100 ++modo;
Gregorio 3:cc43cc1af11a 101 lcd.locate(0,0);
Gregorio 3:cc43cc1af11a 102 lcd.printf("Conf");
Gregorio 3:cc43cc1af11a 103 }
leihen 0:431183c5b136 104 }
Gregorio 3:cc43cc1af11a 105 }//fIN DEL MODO CERO
Gregorio 3:cc43cc1af11a 106 if (modo==1) {
Gregorio 3:cc43cc1af11a 107 rtc.getTime(tm);
Gregorio 3:cc43cc1af11a 108 while(modo==1){
Gregorio 3:cc43cc1af11a 109 if (button4.falling()) { //CAMBIADOR DE MODO
Gregorio 3:cc43cc1af11a 110 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 111 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 112 wait(0.1);
Gregorio 3:cc43cc1af11a 113 pw=0;
Gregorio 3:cc43cc1af11a 114 ++modo;
Gregorio 3:cc43cc1af11a 115 lcd.locate(0,0); //las coordenadas van del 0 al 15 en la primera entrada, y de 0 a 1 en la segunda casilla
Gregorio 3:cc43cc1af11a 116 lcd.printf("Alrm:%02d:%02d:%02d",houral, minal, secal); //%02d indica que la variable tiene maximo dos (2) digitos y si en algun caso solo tiene 1 digito,
Gregorio 3:cc43cc1af11a 117 lcd.locate(0,1); // el otro espacio que queda vacio debe llenarse con un cero (0)
Gregorio 3:cc43cc1af11a 118 lcd.printf("Fech:%02d/%02d/%04d", dateal, monal, yearal);
Gregorio 3:cc43cc1af11a 119 }
Gregorio 3:cc43cc1af11a 120 if (button1.falling()) { //INCREMENTAL
Gregorio 3:cc43cc1af11a 121 if (p==0) {pw=0;} //Condicion: incremental no suena si no estoy ubicado en una variable
Gregorio 3:cc43cc1af11a 122 else{
Gregorio 3:cc43cc1af11a 123 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 124 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 125 wait(0.1);
Gregorio 3:cc43cc1af11a 126 pw=0;
Gregorio 3:cc43cc1af11a 127 }
Gregorio 3:cc43cc1af11a 128 if (p==1) { //posicion de variable hora
Gregorio 3:cc43cc1af11a 129 if (tm.hour==23) {
Gregorio 3:cc43cc1af11a 130 tm.hour=0;
Gregorio 3:cc43cc1af11a 131 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 132 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 133 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 134 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 135 } else {
Gregorio 3:cc43cc1af11a 136 ++tm.hour;
Gregorio 3:cc43cc1af11a 137 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 138 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 139 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 140 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 141 }
Gregorio 3:cc43cc1af11a 142 }
Gregorio 3:cc43cc1af11a 143 else if (p==2) { //p=2: posicion de variable minutos
Gregorio 3:cc43cc1af11a 144 if (tm.min==59) {
Gregorio 3:cc43cc1af11a 145 tm.min=0;
Gregorio 3:cc43cc1af11a 146 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 147 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 148 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 149 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 150 }
Gregorio 3:cc43cc1af11a 151 else {
Gregorio 3:cc43cc1af11a 152 ++tm.min;
Gregorio 3:cc43cc1af11a 153 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 154 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 155 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 156 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 157 }
Gregorio 3:cc43cc1af11a 158 }
Gregorio 3:cc43cc1af11a 159 else if (p==3) {//p=3: posicion de variable segundos
Gregorio 3:cc43cc1af11a 160 if (tm.sec==59) {
Gregorio 3:cc43cc1af11a 161 tm.sec=0;
Gregorio 3:cc43cc1af11a 162 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 163 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 164 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 165 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 166 }
Gregorio 3:cc43cc1af11a 167 else {
Gregorio 3:cc43cc1af11a 168 ++tm.sec;
Gregorio 3:cc43cc1af11a 169 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 170 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 171 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 172 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 173 }
Gregorio 3:cc43cc1af11a 174 }
Gregorio 3:cc43cc1af11a 175 else if (p==4) {//p=4: posicion de variable dia del mes
Gregorio 3:cc43cc1af11a 176 if (tm.date==31) {
Gregorio 3:cc43cc1af11a 177 tm.date=1;
Gregorio 3:cc43cc1af11a 178 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 179 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 180 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 181 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 182 }
Gregorio 3:cc43cc1af11a 183 else {
Gregorio 3:cc43cc1af11a 184 ++tm.date;
Gregorio 3:cc43cc1af11a 185 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 186 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 187 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 188 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 189 }
Gregorio 3:cc43cc1af11a 190 }
Gregorio 3:cc43cc1af11a 191 else if (p==5) {//p=5: posicion de variable mes
Gregorio 3:cc43cc1af11a 192 if (tm.mon==12) {
Gregorio 3:cc43cc1af11a 193 tm.mon=1;
Gregorio 3:cc43cc1af11a 194 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 195 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 196 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 197 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 198 }
Gregorio 3:cc43cc1af11a 199 else {
Gregorio 3:cc43cc1af11a 200 ++tm.mon;
Gregorio 3:cc43cc1af11a 201 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 202 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 203 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 204 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 205 }
Gregorio 3:cc43cc1af11a 206 }
Gregorio 3:cc43cc1af11a 207 else if (p==6) { //p=6: posicion de variable años
Gregorio 3:cc43cc1af11a 208 ++tm.year;
Gregorio 3:cc43cc1af11a 209 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 210 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 211 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 212 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 213 }
Gregorio 3:cc43cc1af11a 214 }
Gregorio 3:cc43cc1af11a 215 if (button2.falling()) { //boton decremental
Gregorio 3:cc43cc1af11a 216 if (p==0) {pw=0;}
Gregorio 3:cc43cc1af11a 217 else{
Gregorio 3:cc43cc1af11a 218 pw.period(Tre);
Gregorio 3:cc43cc1af11a 219 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 220 wait(0.1);
Gregorio 3:cc43cc1af11a 221 pw=0;
Gregorio 3:cc43cc1af11a 222 }
Gregorio 3:cc43cc1af11a 223 if (p==1) {
Gregorio 3:cc43cc1af11a 224 if (tm.hour==0) {
Gregorio 3:cc43cc1af11a 225 tm.hour=24;
Gregorio 3:cc43cc1af11a 226 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 227 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 228 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 229 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 230 }
Gregorio 3:cc43cc1af11a 231 else {
Gregorio 3:cc43cc1af11a 232 --tm.hour;
Gregorio 3:cc43cc1af11a 233 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 234 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 235 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 236 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 237 }
Gregorio 3:cc43cc1af11a 238 }
Gregorio 3:cc43cc1af11a 239 else if (p==2) {
Gregorio 3:cc43cc1af11a 240 if (tm.min==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 241 tm.min=59;
Gregorio 3:cc43cc1af11a 242 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 243 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 244 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 245 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 246 }
Gregorio 3:cc43cc1af11a 247 else {
Gregorio 3:cc43cc1af11a 248 --tm.min;
Gregorio 3:cc43cc1af11a 249 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 250 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 251 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 252 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 253 }
Gregorio 3:cc43cc1af11a 254 }
Gregorio 3:cc43cc1af11a 255 else if (p==3) {
Gregorio 3:cc43cc1af11a 256 if (tm.sec==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 257 tm.sec=59;
Gregorio 3:cc43cc1af11a 258 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 259 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 260 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 261 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 262 }
Gregorio 3:cc43cc1af11a 263 else {
Gregorio 3:cc43cc1af11a 264 --tm.sec;
Gregorio 3:cc43cc1af11a 265 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 266 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 267 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 268 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 269 }
Gregorio 3:cc43cc1af11a 270 }
Gregorio 3:cc43cc1af11a 271 else if (p==4) {
Gregorio 3:cc43cc1af11a 272 if (tm.date==1) { // no mostrar nada
Gregorio 3:cc43cc1af11a 273 tm.date=31;
Gregorio 3:cc43cc1af11a 274 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 275 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 276 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 277 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 278 }
Gregorio 3:cc43cc1af11a 279 else {
Gregorio 3:cc43cc1af11a 280 --tm.date;
Gregorio 3:cc43cc1af11a 281 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 282 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 283 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 284 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 285 }
Gregorio 3:cc43cc1af11a 286 }
Gregorio 3:cc43cc1af11a 287 else if (p==5) {
Gregorio 3:cc43cc1af11a 288 if (tm.mon==1) {
Gregorio 3:cc43cc1af11a 289 tm.mon=12;
Gregorio 3:cc43cc1af11a 290 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 291 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 292 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 293 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 294 }
Gregorio 3:cc43cc1af11a 295 else {
Gregorio 3:cc43cc1af11a 296 --tm.mon;
Gregorio 3:cc43cc1af11a 297 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 298 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 299 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 300 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 301 }
Gregorio 3:cc43cc1af11a 302 }
Gregorio 3:cc43cc1af11a 303 else if (p==6) {
Gregorio 3:cc43cc1af11a 304 if (tm.year==2000) {
Gregorio 3:cc43cc1af11a 305 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 306 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 307 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 308 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 309 }
Gregorio 3:cc43cc1af11a 310 else {
Gregorio 3:cc43cc1af11a 311 --tm.year;
Gregorio 3:cc43cc1af11a 312 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 313 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 314 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 315 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 316 }
Gregorio 3:cc43cc1af11a 317 }
Gregorio 3:cc43cc1af11a 318 }
Gregorio 3:cc43cc1af11a 319 if (button3.falling()) { //boton 3: cambiador de variable
Gregorio 3:cc43cc1af11a 320 pw.period(Tmi);
Gregorio 3:cc43cc1af11a 321 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 322 wait(0.1);
Gregorio 3:cc43cc1af11a 323 pw=0;
Gregorio 3:cc43cc1af11a 324
Gregorio 3:cc43cc1af11a 325 if (p==0) { //p=0: no esta parado en ninguna variable
Gregorio 3:cc43cc1af11a 326 ++p;
Gregorio 3:cc43cc1af11a 327 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 328 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 329 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 330 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 331 } else if (p==1) { //p=1: ubicacion de variable hora
Gregorio 3:cc43cc1af11a 332 ++p;
Gregorio 3:cc43cc1af11a 333 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 334 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 335 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 336 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 337 } else if (p==2) {
Gregorio 3:cc43cc1af11a 338 ++p;
Gregorio 3:cc43cc1af11a 339 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 340 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 341 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 342 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 343 } else if (p==3) {
Gregorio 3:cc43cc1af11a 344 ++p;
Gregorio 3:cc43cc1af11a 345 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 346 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 347 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 348 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 349 } else if (p==4) {
Gregorio 3:cc43cc1af11a 350 ++p;
Gregorio 3:cc43cc1af11a 351 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 352 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 353 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 354 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 355 } else if (p==5) {
Gregorio 3:cc43cc1af11a 356 ++p;
Gregorio 3:cc43cc1af11a 357 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 358 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 359 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 360 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 361 } else if (p==6) {
Gregorio 3:cc43cc1af11a 362 p=0;
Gregorio 3:cc43cc1af11a 363 rtc.setTime(tm, true, false);//SOLO SI CONFIGURO TODAS LAS VARIOABLES Y RETORNO A P=0, LA HORA SE CONFIGURA
Gregorio 3:cc43cc1af11a 364 }
Gregorio 3:cc43cc1af11a 365 }
Gregorio 3:cc43cc1af11a 366 }
Gregorio 3:cc43cc1af11a 367 }
Gregorio 3:cc43cc1af11a 368 //MODO 2: PROGRAMACION DE LA ALARMA
Gregorio 3:cc43cc1af11a 369 if (modo==2) {
Gregorio 3:cc43cc1af11a 370 rtc.getTime(tm);
Gregorio 3:cc43cc1af11a 371 while(modo==2){
Gregorio 3:cc43cc1af11a 372 if (button1.falling()) {
Gregorio 3:cc43cc1af11a 373 if (p==0) {pw=0;}
Gregorio 3:cc43cc1af11a 374 else{
Gregorio 3:cc43cc1af11a 375 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 376 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 377 wait(0.1);
Gregorio 3:cc43cc1af11a 378 pw=0;
Gregorio 3:cc43cc1af11a 379 }
Gregorio 3:cc43cc1af11a 380 if (p==0) {
Gregorio 3:cc43cc1af11a 381 } else if (p==1) {
Gregorio 3:cc43cc1af11a 382 if (houral==23) {
Gregorio 3:cc43cc1af11a 383 houral=0;
Gregorio 3:cc43cc1af11a 384 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 385 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 386 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 387 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 388 } else {
Gregorio 3:cc43cc1af11a 389 ++houral;
Gregorio 3:cc43cc1af11a 390 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 391 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 392 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 393 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 394 }
Gregorio 3:cc43cc1af11a 395 } else if (p==2) {
Gregorio 3:cc43cc1af11a 396 if (minal==59) {
Gregorio 3:cc43cc1af11a 397 minal=0;
Gregorio 3:cc43cc1af11a 398 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 399 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 400 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 401 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 402 } else {
Gregorio 3:cc43cc1af11a 403 ++minal;
Gregorio 3:cc43cc1af11a 404 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 405 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 406 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 407 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 408 }
Gregorio 3:cc43cc1af11a 409 } else if (p==3) {
Gregorio 3:cc43cc1af11a 410 if (secal==59) {
Gregorio 3:cc43cc1af11a 411 secal=0;
Gregorio 3:cc43cc1af11a 412 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 413 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 414 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 415 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 416 } else {
Gregorio 3:cc43cc1af11a 417 ++secal;
Gregorio 3:cc43cc1af11a 418 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 419 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 420 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 421 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 422 }
Gregorio 3:cc43cc1af11a 423 } else if (p==4) {
Gregorio 3:cc43cc1af11a 424 if (dateal==31) {
Gregorio 3:cc43cc1af11a 425 dateal=1;
Gregorio 3:cc43cc1af11a 426 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 427 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 428 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 429 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 430 } else {
Gregorio 3:cc43cc1af11a 431 ++dateal;
Gregorio 3:cc43cc1af11a 432 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 433 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 434 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 435 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 436 }
Gregorio 3:cc43cc1af11a 437 } else if (p==5) {
Gregorio 3:cc43cc1af11a 438 if (monal==12) {
Gregorio 3:cc43cc1af11a 439 monal=1;
Gregorio 3:cc43cc1af11a 440 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 441 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 442 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 443 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 444 } else {
Gregorio 3:cc43cc1af11a 445 ++monal;
Gregorio 3:cc43cc1af11a 446 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 447 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 448 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 449 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 450 }
Gregorio 3:cc43cc1af11a 451 } else if (p==6) {
Gregorio 3:cc43cc1af11a 452 ++yearal;
Gregorio 3:cc43cc1af11a 453 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 454 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 455 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 456 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 457 }
Gregorio 3:cc43cc1af11a 458 }
Gregorio 3:cc43cc1af11a 459 if (button2.falling()) {
Gregorio 3:cc43cc1af11a 460 if (p==0) {pw=0;}
Gregorio 3:cc43cc1af11a 461 else{
Gregorio 3:cc43cc1af11a 462 pw.period(Tre);
Gregorio 3:cc43cc1af11a 463 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 464 wait(0.1);
Gregorio 3:cc43cc1af11a 465 pw=0;
Gregorio 3:cc43cc1af11a 466 }
Gregorio 3:cc43cc1af11a 467 if (p==1) {
Gregorio 3:cc43cc1af11a 468 if (houral==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 469 houral=24;
Gregorio 3:cc43cc1af11a 470 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 471 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 472 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 473 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 474 } else {
Gregorio 3:cc43cc1af11a 475 --houral;
Gregorio 3:cc43cc1af11a 476 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 477 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 478 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 479 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 480 }
Gregorio 3:cc43cc1af11a 481 }
Gregorio 3:cc43cc1af11a 482 if (p==2) {
Gregorio 3:cc43cc1af11a 483 if (minal==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 484 minal=59;
Gregorio 3:cc43cc1af11a 485 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 486 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 487 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 488 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 489 } else {
Gregorio 3:cc43cc1af11a 490 --minal;
Gregorio 3:cc43cc1af11a 491 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 492 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 493 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 494 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 495 }
Gregorio 3:cc43cc1af11a 496 }
Gregorio 3:cc43cc1af11a 497 if (p==3) {
Gregorio 3:cc43cc1af11a 498 if (secal==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 499 secal=59;
Gregorio 3:cc43cc1af11a 500 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 501 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 502 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 503 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 504 } else {
Gregorio 3:cc43cc1af11a 505 --secal;
Gregorio 3:cc43cc1af11a 506 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 507 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 508 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 509 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 510 }
Gregorio 3:cc43cc1af11a 511 }
Gregorio 3:cc43cc1af11a 512 if (p==4) {
Gregorio 3:cc43cc1af11a 513 if (dateal==1) { // no mostrar nada
Gregorio 3:cc43cc1af11a 514 dateal=31;
Gregorio 3:cc43cc1af11a 515 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 516 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 517 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 518 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 519 } else {
Gregorio 3:cc43cc1af11a 520 --dateal;
Gregorio 3:cc43cc1af11a 521 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 522 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 523 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 524 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 525 }
Gregorio 3:cc43cc1af11a 526 }
Gregorio 3:cc43cc1af11a 527 if (p==5) {
Gregorio 3:cc43cc1af11a 528 if (monal==1) {
Gregorio 3:cc43cc1af11a 529 monal=12;
Gregorio 3:cc43cc1af11a 530 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 531 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 532 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 533 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 534 } else {
Gregorio 3:cc43cc1af11a 535 --monal;
Gregorio 3:cc43cc1af11a 536 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 537 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 538 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 539 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 540 }
Gregorio 3:cc43cc1af11a 541 }
Gregorio 3:cc43cc1af11a 542 if (p==6) {
Gregorio 3:cc43cc1af11a 543 if (yearal==2000) {
Gregorio 3:cc43cc1af11a 544 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 545 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 546 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 547 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 548 } else {
Gregorio 3:cc43cc1af11a 549 --yearal;
Gregorio 3:cc43cc1af11a 550 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 551 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 552 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 553 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 554 }
Gregorio 3:cc43cc1af11a 555 }
Gregorio 3:cc43cc1af11a 556 }
Gregorio 3:cc43cc1af11a 557 if (button3.falling()) {//BOTON 3: CAMBIADOR DE VARIABLE (POSICION EN LA LCD)
Gregorio 3:cc43cc1af11a 558 pw.period(Tmi);
Gregorio 3:cc43cc1af11a 559 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 560 wait(0.1);
Gregorio 3:cc43cc1af11a 561 pw=0;
Gregorio 3:cc43cc1af11a 562
Gregorio 3:cc43cc1af11a 563 if (p==0) {
Gregorio 3:cc43cc1af11a 564 ++p;
Gregorio 3:cc43cc1af11a 565 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 566 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 567 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 568 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 569 } else if (p==1) {
Gregorio 3:cc43cc1af11a 570 ++p;
Gregorio 3:cc43cc1af11a 571 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 572 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 573 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 574 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 575 } else if (p==2) {
Gregorio 3:cc43cc1af11a 576 ++p;
Gregorio 3:cc43cc1af11a 577 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 578 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 579 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 580 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 581 } else if (p==3) {
Gregorio 3:cc43cc1af11a 582 ++p;
Gregorio 3:cc43cc1af11a 583 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 584 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 585 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 586 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 587 } else if (p==4) {
Gregorio 3:cc43cc1af11a 588 ++p;
Gregorio 3:cc43cc1af11a 589 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 590 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 591 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 592 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 593 } else if (p==5) {
Gregorio 3:cc43cc1af11a 594 ++p;
Gregorio 3:cc43cc1af11a 595 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 596 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 597 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 598 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 599 } else if (p==6) {
Gregorio 3:cc43cc1af11a 600 p=0;
Gregorio 3:cc43cc1af11a 601 }
Gregorio 3:cc43cc1af11a 602 }
Gregorio 3:cc43cc1af11a 603 if (button4.falling()) { //BOTON 4: CAMBIADOR DE MODO
Gregorio 3:cc43cc1af11a 604 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 605 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 606 wait(0.1);
Gregorio 3:cc43cc1af11a 607 pw=0;
Gregorio 3:cc43cc1af11a 608 modo=0;
Gregorio 3:cc43cc1af11a 609 lcd.locate(0,0);
Gregorio 3:cc43cc1af11a 610 lcd.printf("Hora");
Gregorio 3:cc43cc1af11a 611 }
Gregorio 3:cc43cc1af11a 612 }
Gregorio 3:cc43cc1af11a 613 }
Gregorio 3:cc43cc1af11a 614 }
Gregorio 3:cc43cc1af11a 615
leihen 0:431183c5b136 616 }