reloj de tiempo real con alarma aplazable

Dependencies:   Debounced RTC-DS1307 TextLCD mbed

Fork of Rtc_Ds1307_Sample by Henry Leinen

Committer:
walterg
Date:
Thu May 08 05:08:26 2014 +0000
Revision:
4:242b6afb651e
Parent:
3:cc43cc1af11a
reloj con alarma y retraso

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);
walterg 4:242b6afb651e 7 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5);// rs, e, d4-d7
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
walterg 4:242b6afb651e 31 int houral=2,minal=4,secal=0,dateal=8,monal=5,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) {
walterg 4:242b6afb651e 53
walterg 4:242b6afb651e 54 while( button2==1) { // si el boton 2 se deja presionado sale del while lo que implica que apaga la alarma
walterg 4:242b6afb651e 55
Gregorio 3:cc43cc1af11a 56 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 57 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 58 wait(0.5);
Gregorio 3:cc43cc1af11a 59 pw=0;
Gregorio 3:cc43cc1af11a 60 pw.period(Tre); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 61 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 62 wait(0.5);
Gregorio 3:cc43cc1af11a 63 pw=0;
Gregorio 3:cc43cc1af11a 64 pw.period(Tmi); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 65 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 66 wait(0.5);
Gregorio 3:cc43cc1af11a 67 pw=0;
Gregorio 3:cc43cc1af11a 68 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 69 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 70 wait(0.5);
walterg 4:242b6afb651e 71 pw=0;
walterg 4:242b6afb651e 72 if(button1.falling() ==1) { // si dentro del while se produce una interrupción en el boton 1 retrasa la alarma 1 min
walterg 4:242b6afb651e 73 minal=minal+1;
Gregorio 3:cc43cc1af11a 74 pw=0;
walterg 4:242b6afb651e 75 }
Gregorio 3:cc43cc1af11a 76 }
walterg 4:242b6afb651e 77
walterg 4:242b6afb651e 78
walterg 4:242b6afb651e 79 }
walterg 4:242b6afb651e 80
walterg 4:242b6afb651e 81
Gregorio 3:cc43cc1af11a 82 if (button4.falling()) {
Gregorio 3:cc43cc1af11a 83 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 84 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 85 wait(0.1);
Gregorio 3:cc43cc1af11a 86 pw=0;
Gregorio 3:cc43cc1af11a 87 ++modo;
Gregorio 3:cc43cc1af11a 88 lcd.locate(0,0);
Gregorio 3:cc43cc1af11a 89 lcd.printf("Conf");
Gregorio 3:cc43cc1af11a 90 }
leihen 0:431183c5b136 91 }
Gregorio 3:cc43cc1af11a 92 }//fIN DEL MODO CERO
Gregorio 3:cc43cc1af11a 93 if (modo==1) {
Gregorio 3:cc43cc1af11a 94 rtc.getTime(tm);
Gregorio 3:cc43cc1af11a 95 while(modo==1){
Gregorio 3:cc43cc1af11a 96 if (button4.falling()) { //CAMBIADOR DE MODO
Gregorio 3:cc43cc1af11a 97 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 98 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 99 wait(0.1);
Gregorio 3:cc43cc1af11a 100 pw=0;
Gregorio 3:cc43cc1af11a 101 ++modo;
Gregorio 3:cc43cc1af11a 102 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 103 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 104 lcd.locate(0,1); // el otro espacio que queda vacio debe llenarse con un cero (0)
Gregorio 3:cc43cc1af11a 105 lcd.printf("Fech:%02d/%02d/%04d", dateal, monal, yearal);
Gregorio 3:cc43cc1af11a 106 }
Gregorio 3:cc43cc1af11a 107 if (button1.falling()) { //INCREMENTAL
Gregorio 3:cc43cc1af11a 108 if (p==0) {pw=0;} //Condicion: incremental no suena si no estoy ubicado en una variable
Gregorio 3:cc43cc1af11a 109 else{
Gregorio 3:cc43cc1af11a 110 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 111 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 112 wait(0.1);
Gregorio 3:cc43cc1af11a 113 pw=0;
Gregorio 3:cc43cc1af11a 114 }
Gregorio 3:cc43cc1af11a 115 if (p==1) { //posicion de variable hora
Gregorio 3:cc43cc1af11a 116 if (tm.hour==23) {
Gregorio 3:cc43cc1af11a 117 tm.hour=0;
Gregorio 3:cc43cc1af11a 118 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 119 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 120 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 121 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 122 } else {
Gregorio 3:cc43cc1af11a 123 ++tm.hour;
Gregorio 3:cc43cc1af11a 124 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 125 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 126 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 127 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 128 }
Gregorio 3:cc43cc1af11a 129 }
Gregorio 3:cc43cc1af11a 130 else if (p==2) { //p=2: posicion de variable minutos
Gregorio 3:cc43cc1af11a 131 if (tm.min==59) {
Gregorio 3:cc43cc1af11a 132 tm.min=0;
Gregorio 3:cc43cc1af11a 133 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 134 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 135 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 136 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 137 }
Gregorio 3:cc43cc1af11a 138 else {
Gregorio 3:cc43cc1af11a 139 ++tm.min;
Gregorio 3:cc43cc1af11a 140 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 141 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 142 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 143 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 144 }
Gregorio 3:cc43cc1af11a 145 }
Gregorio 3:cc43cc1af11a 146 else if (p==3) {//p=3: posicion de variable segundos
Gregorio 3:cc43cc1af11a 147 if (tm.sec==59) {
Gregorio 3:cc43cc1af11a 148 tm.sec=0;
Gregorio 3:cc43cc1af11a 149 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 150 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 151 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 152 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 153 }
Gregorio 3:cc43cc1af11a 154 else {
Gregorio 3:cc43cc1af11a 155 ++tm.sec;
Gregorio 3:cc43cc1af11a 156 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 157 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 158 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 159 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 160 }
Gregorio 3:cc43cc1af11a 161 }
Gregorio 3:cc43cc1af11a 162 else if (p==4) {//p=4: posicion de variable dia del mes
Gregorio 3:cc43cc1af11a 163 if (tm.date==31) {
Gregorio 3:cc43cc1af11a 164 tm.date=1;
Gregorio 3:cc43cc1af11a 165 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 166 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 167 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 168 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 169 }
Gregorio 3:cc43cc1af11a 170 else {
Gregorio 3:cc43cc1af11a 171 ++tm.date;
Gregorio 3:cc43cc1af11a 172 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 173 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 174 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 175 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 176 }
Gregorio 3:cc43cc1af11a 177 }
Gregorio 3:cc43cc1af11a 178 else if (p==5) {//p=5: posicion de variable mes
Gregorio 3:cc43cc1af11a 179 if (tm.mon==12) {
Gregorio 3:cc43cc1af11a 180 tm.mon=1;
Gregorio 3:cc43cc1af11a 181 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 182 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 183 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 184 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 185 }
Gregorio 3:cc43cc1af11a 186 else {
Gregorio 3:cc43cc1af11a 187 ++tm.mon;
Gregorio 3:cc43cc1af11a 188 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 189 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 190 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 191 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 192 }
Gregorio 3:cc43cc1af11a 193 }
Gregorio 3:cc43cc1af11a 194 else if (p==6) { //p=6: posicion de variable años
Gregorio 3:cc43cc1af11a 195 ++tm.year;
Gregorio 3:cc43cc1af11a 196 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 197 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 198 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 199 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 200 }
Gregorio 3:cc43cc1af11a 201 }
Gregorio 3:cc43cc1af11a 202 if (button2.falling()) { //boton decremental
Gregorio 3:cc43cc1af11a 203 if (p==0) {pw=0;}
Gregorio 3:cc43cc1af11a 204 else{
Gregorio 3:cc43cc1af11a 205 pw.period(Tre);
Gregorio 3:cc43cc1af11a 206 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 207 wait(0.1);
Gregorio 3:cc43cc1af11a 208 pw=0;
Gregorio 3:cc43cc1af11a 209 }
Gregorio 3:cc43cc1af11a 210 if (p==1) {
Gregorio 3:cc43cc1af11a 211 if (tm.hour==0) {
Gregorio 3:cc43cc1af11a 212 tm.hour=24;
Gregorio 3:cc43cc1af11a 213 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 214 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 215 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 216 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 217 }
Gregorio 3:cc43cc1af11a 218 else {
Gregorio 3:cc43cc1af11a 219 --tm.hour;
Gregorio 3:cc43cc1af11a 220 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 221 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 222 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 223 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 224 }
Gregorio 3:cc43cc1af11a 225 }
Gregorio 3:cc43cc1af11a 226 else if (p==2) {
Gregorio 3:cc43cc1af11a 227 if (tm.min==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 228 tm.min=59;
Gregorio 3:cc43cc1af11a 229 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 230 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 231 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 232 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 233 }
Gregorio 3:cc43cc1af11a 234 else {
Gregorio 3:cc43cc1af11a 235 --tm.min;
Gregorio 3:cc43cc1af11a 236 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 237 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 238 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 239 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 240 }
Gregorio 3:cc43cc1af11a 241 }
Gregorio 3:cc43cc1af11a 242 else if (p==3) {
Gregorio 3:cc43cc1af11a 243 if (tm.sec==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 244 tm.sec=59;
Gregorio 3:cc43cc1af11a 245 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 246 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 247 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 248 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 249 }
Gregorio 3:cc43cc1af11a 250 else {
Gregorio 3:cc43cc1af11a 251 --tm.sec;
Gregorio 3:cc43cc1af11a 252 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 253 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 254 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 255 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 256 }
Gregorio 3:cc43cc1af11a 257 }
Gregorio 3:cc43cc1af11a 258 else if (p==4) {
Gregorio 3:cc43cc1af11a 259 if (tm.date==1) { // no mostrar nada
Gregorio 3:cc43cc1af11a 260 tm.date=31;
Gregorio 3:cc43cc1af11a 261 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 262 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 263 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 264 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 265 }
Gregorio 3:cc43cc1af11a 266 else {
Gregorio 3:cc43cc1af11a 267 --tm.date;
Gregorio 3:cc43cc1af11a 268 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 269 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 270 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 271 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 272 }
Gregorio 3:cc43cc1af11a 273 }
Gregorio 3:cc43cc1af11a 274 else if (p==5) {
Gregorio 3:cc43cc1af11a 275 if (tm.mon==1) {
Gregorio 3:cc43cc1af11a 276 tm.mon=12;
Gregorio 3:cc43cc1af11a 277 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 278 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 279 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 280 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 281 }
Gregorio 3:cc43cc1af11a 282 else {
Gregorio 3:cc43cc1af11a 283 --tm.mon;
Gregorio 3:cc43cc1af11a 284 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 285 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 286 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 287 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 288 }
Gregorio 3:cc43cc1af11a 289 }
Gregorio 3:cc43cc1af11a 290 else if (p==6) {
Gregorio 3:cc43cc1af11a 291 if (tm.year==2000) {
Gregorio 3:cc43cc1af11a 292 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 293 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 294 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 295 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 296 }
Gregorio 3:cc43cc1af11a 297 else {
Gregorio 3:cc43cc1af11a 298 --tm.year;
Gregorio 3:cc43cc1af11a 299 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 300 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 301 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 302 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 303 }
Gregorio 3:cc43cc1af11a 304 }
Gregorio 3:cc43cc1af11a 305 }
Gregorio 3:cc43cc1af11a 306 if (button3.falling()) { //boton 3: cambiador de variable
Gregorio 3:cc43cc1af11a 307 pw.period(Tmi);
Gregorio 3:cc43cc1af11a 308 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 309 wait(0.1);
Gregorio 3:cc43cc1af11a 310 pw=0;
Gregorio 3:cc43cc1af11a 311
Gregorio 3:cc43cc1af11a 312 if (p==0) { //p=0: no esta parado en ninguna variable
Gregorio 3:cc43cc1af11a 313 ++p;
Gregorio 3:cc43cc1af11a 314 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 315 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 316 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 317 lcd.printf("%02d", tm.hour);
Gregorio 3:cc43cc1af11a 318 } else if (p==1) { //p=1: ubicacion de variable hora
Gregorio 3:cc43cc1af11a 319 ++p;
Gregorio 3:cc43cc1af11a 320 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 321 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 322 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 323 lcd.printf("%02d", tm.min);
Gregorio 3:cc43cc1af11a 324 } else if (p==2) {
Gregorio 3:cc43cc1af11a 325 ++p;
Gregorio 3:cc43cc1af11a 326 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 327 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 328 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 329 lcd.printf("%02d", tm.sec);
Gregorio 3:cc43cc1af11a 330 } else if (p==3) {
Gregorio 3:cc43cc1af11a 331 ++p;
Gregorio 3:cc43cc1af11a 332 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 333 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 334 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 335 lcd.printf("%02d", tm.date);
Gregorio 3:cc43cc1af11a 336 } else if (p==4) {
Gregorio 3:cc43cc1af11a 337 ++p;
Gregorio 3:cc43cc1af11a 338 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 339 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 340 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 341 lcd.printf("%02d", tm.mon);
Gregorio 3:cc43cc1af11a 342 } else if (p==5) {
Gregorio 3:cc43cc1af11a 343 ++p;
Gregorio 3:cc43cc1af11a 344 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 345 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 346 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 347 lcd.printf("%04d", tm.year);
Gregorio 3:cc43cc1af11a 348 } else if (p==6) {
Gregorio 3:cc43cc1af11a 349 p=0;
Gregorio 3:cc43cc1af11a 350 rtc.setTime(tm, true, false);//SOLO SI CONFIGURO TODAS LAS VARIOABLES Y RETORNO A P=0, LA HORA SE CONFIGURA
Gregorio 3:cc43cc1af11a 351 }
Gregorio 3:cc43cc1af11a 352 }
Gregorio 3:cc43cc1af11a 353 }
Gregorio 3:cc43cc1af11a 354 }
Gregorio 3:cc43cc1af11a 355 //MODO 2: PROGRAMACION DE LA ALARMA
Gregorio 3:cc43cc1af11a 356 if (modo==2) {
Gregorio 3:cc43cc1af11a 357 rtc.getTime(tm);
Gregorio 3:cc43cc1af11a 358 while(modo==2){
Gregorio 3:cc43cc1af11a 359 if (button1.falling()) {
Gregorio 3:cc43cc1af11a 360 if (p==0) {pw=0;}
Gregorio 3:cc43cc1af11a 361 else{
Gregorio 3:cc43cc1af11a 362 pw.period(Tdo); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 363 pw.pulsewidth(Pdo);
Gregorio 3:cc43cc1af11a 364 wait(0.1);
Gregorio 3:cc43cc1af11a 365 pw=0;
Gregorio 3:cc43cc1af11a 366 }
Gregorio 3:cc43cc1af11a 367 if (p==0) {
Gregorio 3:cc43cc1af11a 368 } else if (p==1) {
Gregorio 3:cc43cc1af11a 369 if (houral==23) {
Gregorio 3:cc43cc1af11a 370 houral=0;
Gregorio 3:cc43cc1af11a 371 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 372 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 373 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 374 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 375 } else {
Gregorio 3:cc43cc1af11a 376 ++houral;
Gregorio 3:cc43cc1af11a 377 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 378 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 379 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 380 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 381 }
Gregorio 3:cc43cc1af11a 382 } else if (p==2) {
Gregorio 3:cc43cc1af11a 383 if (minal==59) {
Gregorio 3:cc43cc1af11a 384 minal=0;
Gregorio 3:cc43cc1af11a 385 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 386 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 387 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 388 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 389 } else {
Gregorio 3:cc43cc1af11a 390 ++minal;
Gregorio 3:cc43cc1af11a 391 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 392 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 393 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 394 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 395 }
Gregorio 3:cc43cc1af11a 396 } else if (p==3) {
Gregorio 3:cc43cc1af11a 397 if (secal==59) {
Gregorio 3:cc43cc1af11a 398 secal=0;
Gregorio 3:cc43cc1af11a 399 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 400 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 401 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 402 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 403 } else {
Gregorio 3:cc43cc1af11a 404 ++secal;
Gregorio 3:cc43cc1af11a 405 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 406 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 407 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 408 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 409 }
Gregorio 3:cc43cc1af11a 410 } else if (p==4) {
Gregorio 3:cc43cc1af11a 411 if (dateal==31) {
Gregorio 3:cc43cc1af11a 412 dateal=1;
Gregorio 3:cc43cc1af11a 413 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 414 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 415 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 416 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 417 } else {
Gregorio 3:cc43cc1af11a 418 ++dateal;
Gregorio 3:cc43cc1af11a 419 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 420 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 421 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 422 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 423 }
Gregorio 3:cc43cc1af11a 424 } else if (p==5) {
Gregorio 3:cc43cc1af11a 425 if (monal==12) {
Gregorio 3:cc43cc1af11a 426 monal=1;
Gregorio 3:cc43cc1af11a 427 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 428 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 429 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 430 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 431 } else {
Gregorio 3:cc43cc1af11a 432 ++monal;
Gregorio 3:cc43cc1af11a 433 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 434 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 435 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 436 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 437 }
Gregorio 3:cc43cc1af11a 438 } else if (p==6) {
Gregorio 3:cc43cc1af11a 439 ++yearal;
Gregorio 3:cc43cc1af11a 440 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 441 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 442 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 443 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 444 }
Gregorio 3:cc43cc1af11a 445 }
Gregorio 3:cc43cc1af11a 446 if (button2.falling()) {
Gregorio 3:cc43cc1af11a 447 if (p==0) {pw=0;}
Gregorio 3:cc43cc1af11a 448 else{
Gregorio 3:cc43cc1af11a 449 pw.period(Tre);
Gregorio 3:cc43cc1af11a 450 pw.pulsewidth(Pre);
Gregorio 3:cc43cc1af11a 451 wait(0.1);
Gregorio 3:cc43cc1af11a 452 pw=0;
Gregorio 3:cc43cc1af11a 453 }
Gregorio 3:cc43cc1af11a 454 if (p==1) {
Gregorio 3:cc43cc1af11a 455 if (houral==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 456 houral=24;
Gregorio 3:cc43cc1af11a 457 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 458 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 459 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 460 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 461 } else {
Gregorio 3:cc43cc1af11a 462 --houral;
Gregorio 3:cc43cc1af11a 463 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 464 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 465 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 466 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 467 }
Gregorio 3:cc43cc1af11a 468 }
Gregorio 3:cc43cc1af11a 469 if (p==2) {
Gregorio 3:cc43cc1af11a 470 if (minal==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 471 minal=59;
Gregorio 3:cc43cc1af11a 472 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 473 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 474 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 475 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 476 } else {
Gregorio 3:cc43cc1af11a 477 --minal;
Gregorio 3:cc43cc1af11a 478 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 479 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 480 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 481 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 482 }
Gregorio 3:cc43cc1af11a 483 }
Gregorio 3:cc43cc1af11a 484 if (p==3) {
Gregorio 3:cc43cc1af11a 485 if (secal==0) { // no mostrar nada
Gregorio 3:cc43cc1af11a 486 secal=59;
Gregorio 3:cc43cc1af11a 487 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 488 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 489 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 490 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 491 } else {
Gregorio 3:cc43cc1af11a 492 --secal;
Gregorio 3:cc43cc1af11a 493 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 494 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 495 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 496 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 497 }
Gregorio 3:cc43cc1af11a 498 }
Gregorio 3:cc43cc1af11a 499 if (p==4) {
Gregorio 3:cc43cc1af11a 500 if (dateal==1) { // no mostrar nada
Gregorio 3:cc43cc1af11a 501 dateal=31;
Gregorio 3:cc43cc1af11a 502 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 503 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 504 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 505 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 506 } else {
Gregorio 3:cc43cc1af11a 507 --dateal;
Gregorio 3:cc43cc1af11a 508 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 509 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 510 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 511 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 512 }
Gregorio 3:cc43cc1af11a 513 }
Gregorio 3:cc43cc1af11a 514 if (p==5) {
Gregorio 3:cc43cc1af11a 515 if (monal==1) {
Gregorio 3:cc43cc1af11a 516 monal=12;
Gregorio 3:cc43cc1af11a 517 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 518 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 519 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 520 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 521 } else {
Gregorio 3:cc43cc1af11a 522 --monal;
Gregorio 3:cc43cc1af11a 523 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 524 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 525 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 526 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 527 }
Gregorio 3:cc43cc1af11a 528 }
Gregorio 3:cc43cc1af11a 529 if (p==6) {
Gregorio 3:cc43cc1af11a 530 if (yearal==2000) {
Gregorio 3:cc43cc1af11a 531 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 532 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 533 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 534 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 535 } else {
Gregorio 3:cc43cc1af11a 536 --yearal;
Gregorio 3:cc43cc1af11a 537 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 538 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 539 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 540 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 541 }
Gregorio 3:cc43cc1af11a 542 }
Gregorio 3:cc43cc1af11a 543 }
Gregorio 3:cc43cc1af11a 544 if (button3.falling()) {//BOTON 3: CAMBIADOR DE VARIABLE (POSICION EN LA LCD)
Gregorio 3:cc43cc1af11a 545 pw.period(Tmi);
Gregorio 3:cc43cc1af11a 546 pw.pulsewidth(Pmi);
Gregorio 3:cc43cc1af11a 547 wait(0.1);
Gregorio 3:cc43cc1af11a 548 pw=0;
Gregorio 3:cc43cc1af11a 549
Gregorio 3:cc43cc1af11a 550 if (p==0) {
Gregorio 3:cc43cc1af11a 551 ++p;
Gregorio 3:cc43cc1af11a 552 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 553 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 554 lcd.locate(5,0);
Gregorio 3:cc43cc1af11a 555 lcd.printf("%02d", houral);
Gregorio 3:cc43cc1af11a 556 } else if (p==1) {
Gregorio 3:cc43cc1af11a 557 ++p;
Gregorio 3:cc43cc1af11a 558 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 559 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 560 lcd.locate(8,0);
Gregorio 3:cc43cc1af11a 561 lcd.printf("%02d", minal);
Gregorio 3:cc43cc1af11a 562 } else if (p==2) {
Gregorio 3:cc43cc1af11a 563 ++p;
Gregorio 3:cc43cc1af11a 564 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 565 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 566 lcd.locate(11,0);
Gregorio 3:cc43cc1af11a 567 lcd.printf("%02d", secal);
Gregorio 3:cc43cc1af11a 568 } else if (p==3) {
Gregorio 3:cc43cc1af11a 569 ++p;
Gregorio 3:cc43cc1af11a 570 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 571 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 572 lcd.locate(5,1);
Gregorio 3:cc43cc1af11a 573 lcd.printf("%02d", dateal);
Gregorio 3:cc43cc1af11a 574 } else if (p==4) {
Gregorio 3:cc43cc1af11a 575 ++p;
Gregorio 3:cc43cc1af11a 576 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 577 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 578 lcd.locate(8,1);
Gregorio 3:cc43cc1af11a 579 lcd.printf("%02d", monal);
Gregorio 3:cc43cc1af11a 580 } else if (p==5) {
Gregorio 3:cc43cc1af11a 581 ++p;
Gregorio 3:cc43cc1af11a 582 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 583 lcd.printf(" ");
Gregorio 3:cc43cc1af11a 584 lcd.locate(11,1);
Gregorio 3:cc43cc1af11a 585 lcd.printf("%04d", yearal);
Gregorio 3:cc43cc1af11a 586 } else if (p==6) {
Gregorio 3:cc43cc1af11a 587 p=0;
Gregorio 3:cc43cc1af11a 588 }
Gregorio 3:cc43cc1af11a 589 }
Gregorio 3:cc43cc1af11a 590 if (button4.falling()) { //BOTON 4: CAMBIADOR DE MODO
Gregorio 3:cc43cc1af11a 591 pw.period(Tfa); // aqui se indica la frecuencia para el sonido al pulsar el boton 1
Gregorio 3:cc43cc1af11a 592 pw.pulsewidth(Pfa);
Gregorio 3:cc43cc1af11a 593 wait(0.1);
Gregorio 3:cc43cc1af11a 594 pw=0;
Gregorio 3:cc43cc1af11a 595 modo=0;
Gregorio 3:cc43cc1af11a 596 lcd.locate(0,0);
Gregorio 3:cc43cc1af11a 597 lcd.printf("Hora");
Gregorio 3:cc43cc1af11a 598 }
Gregorio 3:cc43cc1af11a 599 }
Gregorio 3:cc43cc1af11a 600 }
Gregorio 3:cc43cc1af11a 601 }
Gregorio 3:cc43cc1af11a 602
leihen 0:431183c5b136 603 }