.

Dependencies:   Debounced QEI RTC-DS1307 TextLCD mbed

Fork of Reloj_alarma by Gustavo Ramirez

Committer:
alejom23
Date:
Thu Nov 30 19:41:20 2017 +0000
Revision:
2:2f8b2690d757
Parent:
1:0639f31dd59f
Reloj de 7 Alarmas.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jepalacioh 0:c2ed510ee88d 1 #include "mbed.h"
Jepalacioh 0:c2ed510ee88d 2 #include "DebouncedIn.h"
Jepalacioh 0:c2ed510ee88d 3 #include "TextLCD.h"
Jepalacioh 0:c2ed510ee88d 4 #include "QEI.h"
Jepalacioh 0:c2ed510ee88d 5 #include "Rtc_Ds1307.h"
alejom23 2:2f8b2690d757 6
alejom23 2:2f8b2690d757 7 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5);// rs, e, d4-d7
Jepalacioh 0:c2ed510ee88d 8
Jepalacioh 0:c2ed510ee88d 9 Rtc_Ds1307 rtc(PTE0, PTE1);
Jepalacioh 0:c2ed510ee88d 10 QEI wheel (PTA16, PTA17, NC, 48);
alejom23 2:2f8b2690d757 11
alejom23 2:2f8b2690d757 12 DigitalOut led(PTE31);
alejom23 2:2f8b2690d757 13 DigitalOut led1(LED1);
alejom23 2:2f8b2690d757 14 DigitalOut led2(LED2);
alejom23 2:2f8b2690d757 15 DigitalOut led3(LED3);
Jepalacioh 0:c2ed510ee88d 16 DebouncedIn button_enco(PTC5);
Jepalacioh 0:c2ed510ee88d 17 int C1=0x0C;
alejom23 2:2f8b2690d757 18 int mes=0, dia=0, ano=0, hora=0,minuto=0,seg=0;
tony63 1:0639f31dd59f 19 int m;
Jepalacioh 0:c2ed510ee88d 20 int Conf=0; // 0: Alarma y 1:Reloj
Jepalacioh 0:c2ed510ee88d 21 int Lugar=0; // Definen el punto en el cual va el programa
Jepalacioh 0:c2ed510ee88d 22 int i=0;
Jepalacioh 0:c2ed510ee88d 23 int visual=0;
Jepalacioh 0:c2ed510ee88d 24 int alarma=0;
alejom23 2:2f8b2690d757 25 int j=0,k=0;
alejom23 2:2f8b2690d757 26 int x=1;
alejom23 2:2f8b2690d757 27 void pwr();
alejom23 2:2f8b2690d757 28 bool alarma_existe=false;
alejom23 2:2f8b2690d757 29 bool control = false;
alejom23 2:2f8b2690d757 30 int configurada=0;
alejom23 2:2f8b2690d757 31 int d=0;
alejom23 2:2f8b2690d757 32 int cabeceraL=9000;
alejom23 2:2f8b2690d757 33 int cabeceraH=4555;
alejom23 2:2f8b2690d757 34 int Tdescanso=500;
alejom23 2:2f8b2690d757 35 int Tlow=630;
alejom23 2:2f8b2690d757 36 int Thigh=1750;
alejom23 2:2f8b2690d757 37 int duracion; //duracion de un pulso bajo
alejom23 2:2f8b2690d757 38 int numb = 33;
alejom23 2:2f8b2690d757 39 int code[65];
alejom23 2:2f8b2690d757 40 const unsigned pwrHY[]={575,548,548,575,549,549,575,548,1686,1686,1686,1687,1685,1687,549,1686,
alejom23 2:2f8b2690d757 41 1686,1686,576,548,549,576,549,549,576,549,1687,1687,1686,1686,1687,1686};
Jepalacioh 0:c2ed510ee88d 42 int main()
Jepalacioh 0:c2ed510ee88d 43 {
alejom23 2:2f8b2690d757 44 led1=1;led2=1;led3=1;
Jepalacioh 0:c2ed510ee88d 45 Rtc_Ds1307::Time_rtc tm = {};
alejom23 2:2f8b2690d757 46 Rtc_Ds1307::Time_rtc Alarm[7] = {};
Jepalacioh 0:c2ed510ee88d 47 lcd.cls();
Jepalacioh 0:c2ed510ee88d 48 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
Jepalacioh 0:c2ed510ee88d 49
Jepalacioh 0:c2ed510ee88d 50 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 51 lcd.printf("--Alarma --Hora");
Jepalacioh 0:c2ed510ee88d 52
alejom23 2:2f8b2690d757 53 rtc.getTime(tm);
alejom23 2:2f8b2690d757 54
Jepalacioh 0:c2ed510ee88d 55 while(1)
Jepalacioh 0:c2ed510ee88d 56 {
alejom23 2:2f8b2690d757 57 rtc.getTime(tm);
alejom23 2:2f8b2690d757 58 if(alarma_existe==true){
alejom23 2:2f8b2690d757 59 while(x==1){
alejom23 2:2f8b2690d757 60 if((Alarm[k].date==tm.date && Alarm[k].mon==tm.mon && Alarm[k].year==tm.year && Alarm[k].hour==tm.hour && Alarm[k].min==tm.min && Alarm[k].sec==tm.sec)){
alejom23 2:2f8b2690d757 61 lcd.cls();
alejom23 2:2f8b2690d757 62 lcd.locate(0,0);
alejom23 2:2f8b2690d757 63 led1=0;led2=0;led3=0;
alejom23 2:2f8b2690d757 64 lcd.printf("Alarma Activada!");
alejom23 2:2f8b2690d757 65 lcd.locate(0,1);
alejom23 2:2f8b2690d757 66 lcd.printf("Prendido");
alejom23 2:2f8b2690d757 67 control=true;
alejom23 2:2f8b2690d757 68 while(d==0){
alejom23 2:2f8b2690d757 69 if(button_enco.falling()){
alejom23 2:2f8b2690d757 70 pwr();
alejom23 2:2f8b2690d757 71 x=0;
alejom23 2:2f8b2690d757 72 lcd.cls();
alejom23 2:2f8b2690d757 73 lcd.locate(0,0);
alejom23 2:2f8b2690d757 74 lcd.printf("--Alarma --Hora");
alejom23 2:2f8b2690d757 75 Lugar=0;
alejom23 2:2f8b2690d757 76 i=0;
alejom23 2:2f8b2690d757 77 led1=1;led2=1;led3=1;
alejom23 2:2f8b2690d757 78 control = false;
alejom23 2:2f8b2690d757 79 d=1;
alejom23 2:2f8b2690d757 80 }
alejom23 2:2f8b2690d757 81 }
alejom23 2:2f8b2690d757 82 }
alejom23 2:2f8b2690d757 83 if(k==j){
alejom23 2:2f8b2690d757 84 break;
alejom23 2:2f8b2690d757 85 }
alejom23 2:2f8b2690d757 86 k++;
alejom23 2:2f8b2690d757 87 }
alejom23 2:2f8b2690d757 88 k=0;
alejom23 2:2f8b2690d757 89 }
alejom23 2:2f8b2690d757 90 d=0;
alejom23 2:2f8b2690d757 91 x=1;
Jepalacioh 0:c2ed510ee88d 92 switch (Lugar)
Jepalacioh 0:c2ed510ee88d 93 {
Jepalacioh 0:c2ed510ee88d 94 case 0:
alejom23 2:2f8b2690d757 95 m = wheel.getPulses();
Jepalacioh 0:c2ed510ee88d 96 if(m!=0 && Conf==0){
Jepalacioh 0:c2ed510ee88d 97 Conf=1;
Jepalacioh 0:c2ed510ee88d 98 wheel.reset();
Jepalacioh 0:c2ed510ee88d 99 m=0;
Jepalacioh 0:c2ed510ee88d 100 }
Jepalacioh 0:c2ed510ee88d 101
Jepalacioh 0:c2ed510ee88d 102 if(m!=0 && Conf==1){
Jepalacioh 0:c2ed510ee88d 103 Conf=0;
Jepalacioh 0:c2ed510ee88d 104 wheel.reset();
Jepalacioh 0:c2ed510ee88d 105 m=0;
Jepalacioh 0:c2ed510ee88d 106 }
Jepalacioh 0:c2ed510ee88d 107
Jepalacioh 0:c2ed510ee88d 108 if(Conf==0){
Jepalacioh 0:c2ed510ee88d 109
Jepalacioh 0:c2ed510ee88d 110 lcd.locate(11,0);
Jepalacioh 0:c2ed510ee88d 111 lcd.printf("-");
Jepalacioh 0:c2ed510ee88d 112 lcd.locate(1,0);
Jepalacioh 0:c2ed510ee88d 113 lcd.printf(">");
Jepalacioh 0:c2ed510ee88d 114 lcd.locate(0,1);
Jepalacioh 0:c2ed510ee88d 115 wait(0.1);
Jepalacioh 0:c2ed510ee88d 116
Jepalacioh 0:c2ed510ee88d 117 }
Jepalacioh 0:c2ed510ee88d 118
Jepalacioh 0:c2ed510ee88d 119 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 120
Jepalacioh 0:c2ed510ee88d 121 lcd.locate(1,0);
Jepalacioh 0:c2ed510ee88d 122 lcd.printf("-");
Jepalacioh 0:c2ed510ee88d 123 lcd.locate(11,0);
Jepalacioh 0:c2ed510ee88d 124 lcd.printf(">");
Jepalacioh 0:c2ed510ee88d 125 lcd.locate(0,1);
Jepalacioh 0:c2ed510ee88d 126 wait(0.1);
Jepalacioh 0:c2ed510ee88d 127 }
Jepalacioh 0:c2ed510ee88d 128
alejom23 2:2f8b2690d757 129 if (button_enco.falling()){
Jepalacioh 0:c2ed510ee88d 130 Lugar++;
Jepalacioh 0:c2ed510ee88d 131 m=0;
Jepalacioh 0:c2ed510ee88d 132 }
Jepalacioh 0:c2ed510ee88d 133
Jepalacioh 0:c2ed510ee88d 134 break;
Jepalacioh 0:c2ed510ee88d 135
Jepalacioh 0:c2ed510ee88d 136 case 1:
Jepalacioh 0:c2ed510ee88d 137 switch(i)
Jepalacioh 0:c2ed510ee88d 138 {
Jepalacioh 0:c2ed510ee88d 139 case 0:
Jepalacioh 0:c2ed510ee88d 140
Jepalacioh 0:c2ed510ee88d 141
alejom23 2:2f8b2690d757 142 if(Conf==0 && j<6)
Jepalacioh 0:c2ed510ee88d 143 {
Jepalacioh 0:c2ed510ee88d 144 lcd.cls();
Jepalacioh 0:c2ed510ee88d 145 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 146 lcd.printf("Config. Alarma ");
Jepalacioh 0:c2ed510ee88d 147 wait(1);
Jepalacioh 0:c2ed510ee88d 148 i++;
Jepalacioh 0:c2ed510ee88d 149 m=0;
Jepalacioh 0:c2ed510ee88d 150 lcd.cls();
Jepalacioh 0:c2ed510ee88d 151 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 152 lcd.printf("Dia: ");
alejom23 2:2f8b2690d757 153 dia=1;
alejom23 2:2f8b2690d757 154 }
alejom23 2:2f8b2690d757 155 if(Conf==0 && j==6)
alejom23 2:2f8b2690d757 156 {
alejom23 2:2f8b2690d757 157 j=0;
alejom23 2:2f8b2690d757 158 while(j<7){
alejom23 2:2f8b2690d757 159 lcd.cls();
alejom23 2:2f8b2690d757 160 lcd.locate(0,0);
alejom23 2:2f8b2690d757 161 lcd.printf("H: ");
alejom23 2:2f8b2690d757 162 lcd.printf("%02d:",Alarm[j].hour);
alejom23 2:2f8b2690d757 163 lcd.printf("%02d:",Alarm[j].min);
alejom23 2:2f8b2690d757 164 lcd.printf("%02d",Alarm[j].sec);
alejom23 2:2f8b2690d757 165 lcd.locate(0,1);
alejom23 2:2f8b2690d757 166 lcd.printf("F: ");
alejom23 2:2f8b2690d757 167 lcd.printf("%02d:",Alarm[j].date);
alejom23 2:2f8b2690d757 168 lcd.printf("%02d:",Alarm[j].mon);
alejom23 2:2f8b2690d757 169 lcd.printf("%02d",Alarm[j].year);
alejom23 2:2f8b2690d757 170 wait(0.25);
alejom23 2:2f8b2690d757 171 if(button_enco.falling()){
alejom23 2:2f8b2690d757 172 j++;
alejom23 2:2f8b2690d757 173 }
alejom23 2:2f8b2690d757 174 }
alejom23 2:2f8b2690d757 175 Lugar=0;
alejom23 2:2f8b2690d757 176 i=0;
alejom23 2:2f8b2690d757 177 j=0;
alejom23 2:2f8b2690d757 178 lcd.cls();
alejom23 2:2f8b2690d757 179 lcd.locate(0,0);
alejom23 2:2f8b2690d757 180 lcd.printf("--Alarma --Hora");
Jepalacioh 0:c2ed510ee88d 181 }
Jepalacioh 0:c2ed510ee88d 182
alejom23 2:2f8b2690d757 183 if(Conf==1 && configurada==0)
Jepalacioh 0:c2ed510ee88d 184 {
Jepalacioh 0:c2ed510ee88d 185 lcd.cls();
Jepalacioh 0:c2ed510ee88d 186 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 187 lcd.printf("Config. hora ");
Jepalacioh 0:c2ed510ee88d 188 wait(1);
Jepalacioh 0:c2ed510ee88d 189 i++;
Jepalacioh 0:c2ed510ee88d 190 m=0;
Jepalacioh 0:c2ed510ee88d 191 lcd.cls();
Jepalacioh 0:c2ed510ee88d 192 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 193 lcd.printf("Dia: ");
alejom23 2:2f8b2690d757 194 //tm.date=1;
alejom23 2:2f8b2690d757 195 }
alejom23 2:2f8b2690d757 196
alejom23 2:2f8b2690d757 197 if(Conf==1 && configurada==1)
alejom23 2:2f8b2690d757 198 {
alejom23 2:2f8b2690d757 199 rtc.getTime(tm);
alejom23 2:2f8b2690d757 200 lcd.cls();
alejom23 2:2f8b2690d757 201 lcd.locate(0,0);
alejom23 2:2f8b2690d757 202 lcd.printf("H: ");
alejom23 2:2f8b2690d757 203 lcd.printf("%02d:",tm.hour);
alejom23 2:2f8b2690d757 204 lcd.printf("%02d:",tm.min);
alejom23 2:2f8b2690d757 205 lcd.printf("%02d",tm.sec);
alejom23 2:2f8b2690d757 206 lcd.locate(0,1);
alejom23 2:2f8b2690d757 207 lcd.printf("F: ");
alejom23 2:2f8b2690d757 208 lcd.printf("%02d:",tm.date);
alejom23 2:2f8b2690d757 209 lcd.printf("%02d:",tm.mon);
alejom23 2:2f8b2690d757 210 lcd.printf("%02d",tm.year);
alejom23 2:2f8b2690d757 211 wait(0.25);
alejom23 2:2f8b2690d757 212 if(button_enco.falling()){
alejom23 2:2f8b2690d757 213 Lugar=0;
alejom23 2:2f8b2690d757 214 i=0;
alejom23 2:2f8b2690d757 215 }
alejom23 2:2f8b2690d757 216 lcd.cls();
alejom23 2:2f8b2690d757 217 lcd.locate(0,0);
alejom23 2:2f8b2690d757 218 lcd.printf("--Alarma --Hora");
alejom23 2:2f8b2690d757 219 }
Jepalacioh 0:c2ed510ee88d 220 break;
Jepalacioh 0:c2ed510ee88d 221
Jepalacioh 0:c2ed510ee88d 222 case 1:
alejom23 2:2f8b2690d757 223 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 224 m=wheel.getPulses();
Jepalacioh 0:c2ed510ee88d 225 if (m!=0)
Jepalacioh 0:c2ed510ee88d 226 {
alejom23 2:2f8b2690d757 227 dia=dia+m;
alejom23 2:2f8b2690d757 228 if(dia>31)
Jepalacioh 0:c2ed510ee88d 229 {
alejom23 2:2f8b2690d757 230 dia=31;
Jepalacioh 0:c2ed510ee88d 231 }
alejom23 2:2f8b2690d757 232 if(dia<1)
Jepalacioh 0:c2ed510ee88d 233 {
alejom23 2:2f8b2690d757 234 dia=1;
Jepalacioh 0:c2ed510ee88d 235 }
Jepalacioh 0:c2ed510ee88d 236
Jepalacioh 0:c2ed510ee88d 237 wheel.reset();
Jepalacioh 0:c2ed510ee88d 238 m=0;
Jepalacioh 0:c2ed510ee88d 239 }
Jepalacioh 0:c2ed510ee88d 240 lcd.locate(5,0);
alejom23 2:2f8b2690d757 241 lcd.printf("%02d",dia);
alejom23 2:2f8b2690d757 242 }
Jepalacioh 0:c2ed510ee88d 243
alejom23 2:2f8b2690d757 244 if(Conf==0){
alejom23 2:2f8b2690d757 245 m=wheel.getPulses();
alejom23 2:2f8b2690d757 246 if (m!=0)
alejom23 2:2f8b2690d757 247 {
alejom23 2:2f8b2690d757 248 dia = dia + m;
alejom23 2:2f8b2690d757 249 if(dia>31)
alejom23 2:2f8b2690d757 250 {
alejom23 2:2f8b2690d757 251 dia=31;
alejom23 2:2f8b2690d757 252 }
alejom23 2:2f8b2690d757 253 if(dia<1)
alejom23 2:2f8b2690d757 254 {
alejom23 2:2f8b2690d757 255 dia=1;
alejom23 2:2f8b2690d757 256 }
alejom23 2:2f8b2690d757 257
alejom23 2:2f8b2690d757 258 wheel.reset();
alejom23 2:2f8b2690d757 259 m=0;
alejom23 2:2f8b2690d757 260 }
alejom23 2:2f8b2690d757 261 lcd.locate(5,0);
alejom23 2:2f8b2690d757 262 lcd.printf("%02d",dia);
alejom23 2:2f8b2690d757 263 }
alejom23 2:2f8b2690d757 264
Jepalacioh 0:c2ed510ee88d 265 if (button_enco.falling())
Jepalacioh 0:c2ed510ee88d 266 {
Jepalacioh 0:c2ed510ee88d 267 i++;
Jepalacioh 0:c2ed510ee88d 268 m=0;
Jepalacioh 0:c2ed510ee88d 269 lcd.cls();
Jepalacioh 0:c2ed510ee88d 270 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 271 lcd.printf("Mes: ");
Jepalacioh 0:c2ed510ee88d 272 //tm.mon=1;
Jepalacioh 0:c2ed510ee88d 273 }
Jepalacioh 0:c2ed510ee88d 274
Jepalacioh 0:c2ed510ee88d 275 break;
Jepalacioh 0:c2ed510ee88d 276
Jepalacioh 0:c2ed510ee88d 277 case 2:
alejom23 2:2f8b2690d757 278 m=wheel.getPulses();
alejom23 2:2f8b2690d757 279 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 280 if (m!=0)
Jepalacioh 0:c2ed510ee88d 281 {
alejom23 2:2f8b2690d757 282 mes=mes+m;
alejom23 2:2f8b2690d757 283 if(mes>12)
Jepalacioh 0:c2ed510ee88d 284 {
alejom23 2:2f8b2690d757 285 mes=12;
Jepalacioh 0:c2ed510ee88d 286 }
alejom23 2:2f8b2690d757 287 if(mes<1)
Jepalacioh 0:c2ed510ee88d 288 {
alejom23 2:2f8b2690d757 289 mes=1;
Jepalacioh 0:c2ed510ee88d 290 }
Jepalacioh 0:c2ed510ee88d 291
Jepalacioh 0:c2ed510ee88d 292 wheel.reset();
Jepalacioh 0:c2ed510ee88d 293 m=0;
Jepalacioh 0:c2ed510ee88d 294 }
Jepalacioh 0:c2ed510ee88d 295 lcd.locate(5,0);
alejom23 2:2f8b2690d757 296 lcd.printf("%02d",mes);
alejom23 2:2f8b2690d757 297 }
alejom23 2:2f8b2690d757 298 if(Conf==0){
alejom23 2:2f8b2690d757 299 if (m!=0)
alejom23 2:2f8b2690d757 300 {
alejom23 2:2f8b2690d757 301 mes=mes+m;
alejom23 2:2f8b2690d757 302 if(mes>12)
alejom23 2:2f8b2690d757 303 {
alejom23 2:2f8b2690d757 304 mes=12;
alejom23 2:2f8b2690d757 305 }
alejom23 2:2f8b2690d757 306 if(mes<1)
alejom23 2:2f8b2690d757 307 {
alejom23 2:2f8b2690d757 308 mes=1;
alejom23 2:2f8b2690d757 309 }
alejom23 2:2f8b2690d757 310
alejom23 2:2f8b2690d757 311 wheel.reset();
alejom23 2:2f8b2690d757 312 m=0;
alejom23 2:2f8b2690d757 313 }
alejom23 2:2f8b2690d757 314 lcd.locate(5,0);
alejom23 2:2f8b2690d757 315 lcd.printf("%02d",mes);
alejom23 2:2f8b2690d757 316 }
Jepalacioh 0:c2ed510ee88d 317 if (button_enco.falling())
Jepalacioh 0:c2ed510ee88d 318 {
Jepalacioh 0:c2ed510ee88d 319 i++;
Jepalacioh 0:c2ed510ee88d 320 m=0;
Jepalacioh 0:c2ed510ee88d 321 lcd.cls();
Jepalacioh 0:c2ed510ee88d 322 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 323 lcd.printf("Year: ");
alejom23 2:2f8b2690d757 324 //tm.year=2000;
Jepalacioh 0:c2ed510ee88d 325 }
Jepalacioh 0:c2ed510ee88d 326
Jepalacioh 0:c2ed510ee88d 327 break;
Jepalacioh 0:c2ed510ee88d 328
Jepalacioh 0:c2ed510ee88d 329 case 3:
alejom23 2:2f8b2690d757 330 m=wheel.getPulses();
alejom23 2:2f8b2690d757 331 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 332 if (m!=0)
Jepalacioh 0:c2ed510ee88d 333 {
alejom23 2:2f8b2690d757 334 ano=ano+m;
Jepalacioh 0:c2ed510ee88d 335
alejom23 2:2f8b2690d757 336 if(ano<2000)
Jepalacioh 0:c2ed510ee88d 337 {
alejom23 2:2f8b2690d757 338 ano=2000;
Jepalacioh 0:c2ed510ee88d 339 }
Jepalacioh 0:c2ed510ee88d 340
Jepalacioh 0:c2ed510ee88d 341 wheel.reset();
Jepalacioh 0:c2ed510ee88d 342 m=0;
Jepalacioh 0:c2ed510ee88d 343 }
Jepalacioh 0:c2ed510ee88d 344 lcd.locate(6,0);
alejom23 2:2f8b2690d757 345 lcd.printf("%02d",ano);
alejom23 2:2f8b2690d757 346 }
alejom23 2:2f8b2690d757 347 if(Conf==0){
alejom23 2:2f8b2690d757 348 if (m!=0)
alejom23 2:2f8b2690d757 349 {
alejom23 2:2f8b2690d757 350 ano=ano + m;
alejom23 2:2f8b2690d757 351
alejom23 2:2f8b2690d757 352 if(ano<2000)
alejom23 2:2f8b2690d757 353 {
alejom23 2:2f8b2690d757 354 ano=2000;
alejom23 2:2f8b2690d757 355 }
alejom23 2:2f8b2690d757 356
alejom23 2:2f8b2690d757 357 wheel.reset();
alejom23 2:2f8b2690d757 358 m=0;
alejom23 2:2f8b2690d757 359 }
alejom23 2:2f8b2690d757 360 lcd.locate(6,0);
alejom23 2:2f8b2690d757 361 lcd.printf("%02d",ano);
alejom23 2:2f8b2690d757 362 }
Jepalacioh 0:c2ed510ee88d 363 if (button_enco.falling())
Jepalacioh 0:c2ed510ee88d 364 {
Jepalacioh 0:c2ed510ee88d 365 i++;
Jepalacioh 0:c2ed510ee88d 366 m=0;
Jepalacioh 0:c2ed510ee88d 367 lcd.cls();
Jepalacioh 0:c2ed510ee88d 368 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 369 lcd.printf("Hora: ");
alejom23 2:2f8b2690d757 370 //tm.hour=5;
Jepalacioh 0:c2ed510ee88d 371 }
Jepalacioh 0:c2ed510ee88d 372
Jepalacioh 0:c2ed510ee88d 373 break;
Jepalacioh 0:c2ed510ee88d 374
Jepalacioh 0:c2ed510ee88d 375 case 4:
Jepalacioh 0:c2ed510ee88d 376 m=wheel.getPulses();
alejom23 2:2f8b2690d757 377 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 378 if (m!=0)
Jepalacioh 0:c2ed510ee88d 379 {
alejom23 2:2f8b2690d757 380 hora=hora+ m;
alejom23 2:2f8b2690d757 381 if(hora>23)
Jepalacioh 0:c2ed510ee88d 382 {
alejom23 2:2f8b2690d757 383 hora=23;
Jepalacioh 0:c2ed510ee88d 384 }
alejom23 2:2f8b2690d757 385 if(hora<0)
Jepalacioh 0:c2ed510ee88d 386 {
alejom23 2:2f8b2690d757 387 hora=0;
Jepalacioh 0:c2ed510ee88d 388 }
Jepalacioh 0:c2ed510ee88d 389
Jepalacioh 0:c2ed510ee88d 390 wheel.reset();
Jepalacioh 0:c2ed510ee88d 391 m=0;
Jepalacioh 0:c2ed510ee88d 392 }
Jepalacioh 0:c2ed510ee88d 393 lcd.locate(6,0);
alejom23 2:2f8b2690d757 394 lcd.printf("%02d",hora);
alejom23 2:2f8b2690d757 395 }
alejom23 2:2f8b2690d757 396 if(Conf==0){
alejom23 2:2f8b2690d757 397 if (m!=0)
alejom23 2:2f8b2690d757 398 {
alejom23 2:2f8b2690d757 399 hora=hora + m;
alejom23 2:2f8b2690d757 400 if(hora>23)
alejom23 2:2f8b2690d757 401 {
alejom23 2:2f8b2690d757 402 hora=23;
alejom23 2:2f8b2690d757 403 }
alejom23 2:2f8b2690d757 404 if(hora<0)
alejom23 2:2f8b2690d757 405 {
alejom23 2:2f8b2690d757 406 hora=0;
alejom23 2:2f8b2690d757 407 }
alejom23 2:2f8b2690d757 408
alejom23 2:2f8b2690d757 409 wheel.reset();
alejom23 2:2f8b2690d757 410 m=0;
alejom23 2:2f8b2690d757 411 }
alejom23 2:2f8b2690d757 412 lcd.locate(6,0);
alejom23 2:2f8b2690d757 413 lcd.printf("%02d",hora);
alejom23 2:2f8b2690d757 414 }
Jepalacioh 0:c2ed510ee88d 415 if (button_enco.falling())
Jepalacioh 0:c2ed510ee88d 416 {
Jepalacioh 0:c2ed510ee88d 417 i++;
Jepalacioh 0:c2ed510ee88d 418 m=0;
Jepalacioh 0:c2ed510ee88d 419 lcd.cls();
Jepalacioh 0:c2ed510ee88d 420 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 421 lcd.printf("Minuto: ");
Jepalacioh 0:c2ed510ee88d 422 //tm.min=0;
Jepalacioh 0:c2ed510ee88d 423 }
Jepalacioh 0:c2ed510ee88d 424
Jepalacioh 0:c2ed510ee88d 425 break;
Jepalacioh 0:c2ed510ee88d 426
Jepalacioh 0:c2ed510ee88d 427 case 5:
alejom23 2:2f8b2690d757 428 m=wheel.getPulses();
alejom23 2:2f8b2690d757 429 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 430 if (m!=0)
Jepalacioh 0:c2ed510ee88d 431 {
alejom23 2:2f8b2690d757 432 minuto=minuto+m;
alejom23 2:2f8b2690d757 433 if(minuto>59)
Jepalacioh 0:c2ed510ee88d 434 {
alejom23 2:2f8b2690d757 435 minuto=59;
Jepalacioh 0:c2ed510ee88d 436 }
alejom23 2:2f8b2690d757 437 if(minuto<0)
Jepalacioh 0:c2ed510ee88d 438 {
alejom23 2:2f8b2690d757 439 minuto=0;
Jepalacioh 0:c2ed510ee88d 440 }
Jepalacioh 0:c2ed510ee88d 441
Jepalacioh 0:c2ed510ee88d 442 wheel.reset();
Jepalacioh 0:c2ed510ee88d 443 m=0;
Jepalacioh 0:c2ed510ee88d 444 }
Jepalacioh 0:c2ed510ee88d 445 lcd.locate(8,0);
alejom23 2:2f8b2690d757 446 lcd.printf("%02d",minuto);
alejom23 2:2f8b2690d757 447 }
alejom23 2:2f8b2690d757 448 if(Conf==0){
alejom23 2:2f8b2690d757 449 if (m!=0)
alejom23 2:2f8b2690d757 450 {
alejom23 2:2f8b2690d757 451 minuto=minuto+m;
alejom23 2:2f8b2690d757 452 if(minuto>59)
alejom23 2:2f8b2690d757 453 {
alejom23 2:2f8b2690d757 454 minuto=59;
alejom23 2:2f8b2690d757 455 }
alejom23 2:2f8b2690d757 456 if(minuto<0)
alejom23 2:2f8b2690d757 457 {
alejom23 2:2f8b2690d757 458 minuto=0;
alejom23 2:2f8b2690d757 459 }
alejom23 2:2f8b2690d757 460
alejom23 2:2f8b2690d757 461 wheel.reset();
alejom23 2:2f8b2690d757 462 m=0;
alejom23 2:2f8b2690d757 463 }
alejom23 2:2f8b2690d757 464 lcd.locate(8,0);
alejom23 2:2f8b2690d757 465 lcd.printf("%02d",minuto);
alejom23 2:2f8b2690d757 466 }
Jepalacioh 0:c2ed510ee88d 467 if (button_enco.falling())
Jepalacioh 0:c2ed510ee88d 468 {
Jepalacioh 0:c2ed510ee88d 469 i++;
Jepalacioh 0:c2ed510ee88d 470 m=0;
Jepalacioh 0:c2ed510ee88d 471 lcd.cls();
Jepalacioh 0:c2ed510ee88d 472 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 473 lcd.printf("Segundo: ");
Jepalacioh 0:c2ed510ee88d 474 //tm.sec=0;
Jepalacioh 0:c2ed510ee88d 475 }
Jepalacioh 0:c2ed510ee88d 476
Jepalacioh 0:c2ed510ee88d 477 break;
Jepalacioh 0:c2ed510ee88d 478
Jepalacioh 0:c2ed510ee88d 479
Jepalacioh 0:c2ed510ee88d 480 case 6:
alejom23 2:2f8b2690d757 481 m=wheel.getPulses();
alejom23 2:2f8b2690d757 482 if(Conf==1){
Jepalacioh 0:c2ed510ee88d 483 if (m!=0)
Jepalacioh 0:c2ed510ee88d 484 {
alejom23 2:2f8b2690d757 485 seg=seg+m;
alejom23 2:2f8b2690d757 486 if(seg>59)
alejom23 2:2f8b2690d757 487 {
alejom23 2:2f8b2690d757 488 seg=59;
alejom23 2:2f8b2690d757 489 }
alejom23 2:2f8b2690d757 490 if(seg<0)
Jepalacioh 0:c2ed510ee88d 491 {
alejom23 2:2f8b2690d757 492 seg=0;
Jepalacioh 0:c2ed510ee88d 493 }
alejom23 2:2f8b2690d757 494
alejom23 2:2f8b2690d757 495 wheel.reset();
alejom23 2:2f8b2690d757 496 m=0;
alejom23 2:2f8b2690d757 497 }
alejom23 2:2f8b2690d757 498 lcd.locate(9,0);
alejom23 2:2f8b2690d757 499 lcd.printf("%02d",seg);
alejom23 2:2f8b2690d757 500 }
alejom23 2:2f8b2690d757 501 if(Conf==0){
alejom23 2:2f8b2690d757 502 if (m!=0)
alejom23 2:2f8b2690d757 503 {
alejom23 2:2f8b2690d757 504 seg=seg+m;
alejom23 2:2f8b2690d757 505 if(seg>59)
Jepalacioh 0:c2ed510ee88d 506 {
alejom23 2:2f8b2690d757 507 seg=59;
alejom23 2:2f8b2690d757 508 }
alejom23 2:2f8b2690d757 509 if(seg<0)
alejom23 2:2f8b2690d757 510 {
alejom23 2:2f8b2690d757 511 seg=0;
Jepalacioh 0:c2ed510ee88d 512 }
Jepalacioh 0:c2ed510ee88d 513
Jepalacioh 0:c2ed510ee88d 514 wheel.reset();
Jepalacioh 0:c2ed510ee88d 515 m=0;
Jepalacioh 0:c2ed510ee88d 516 }
Jepalacioh 0:c2ed510ee88d 517 lcd.locate(9,0);
alejom23 2:2f8b2690d757 518 lcd.printf("%02d",seg);
alejom23 2:2f8b2690d757 519 }
Jepalacioh 0:c2ed510ee88d 520 if (button_enco.falling())
Jepalacioh 0:c2ed510ee88d 521 {
Jepalacioh 0:c2ed510ee88d 522 ///////////////////
Jepalacioh 0:c2ed510ee88d 523 if(Conf==0)
Jepalacioh 0:c2ed510ee88d 524 {
Jepalacioh 0:c2ed510ee88d 525 lcd.cls();
Jepalacioh 0:c2ed510ee88d 526 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 527 lcd.printf("Alarma config. ");
Jepalacioh 0:c2ed510ee88d 528 wait(1);
Jepalacioh 0:c2ed510ee88d 529 i=0;
Jepalacioh 0:c2ed510ee88d 530 m=0;
alejom23 2:2f8b2690d757 531 Lugar=0;
Jepalacioh 0:c2ed510ee88d 532 lcd.cls();
alejom23 2:2f8b2690d757 533 alarma_existe=true;
alejom23 2:2f8b2690d757 534 Alarm[j].year=ano;
alejom23 2:2f8b2690d757 535 Alarm[j].mon=mes;
alejom23 2:2f8b2690d757 536 Alarm[j].date=dia;
alejom23 2:2f8b2690d757 537 Alarm[j].min=minuto;
alejom23 2:2f8b2690d757 538 Alarm[j].sec=seg;
alejom23 2:2f8b2690d757 539 Alarm[j].hour=hora;
alejom23 2:2f8b2690d757 540 j++;
alejom23 2:2f8b2690d757 541 lcd.cls();
alejom23 2:2f8b2690d757 542 lcd.locate(0,0);
alejom23 2:2f8b2690d757 543 lcd.printf("--Alarma --Hora");
Jepalacioh 0:c2ed510ee88d 544 }
Jepalacioh 0:c2ed510ee88d 545
Jepalacioh 0:c2ed510ee88d 546 if(Conf==1)
Jepalacioh 0:c2ed510ee88d 547 {
alejom23 2:2f8b2690d757 548 tm.year=ano;
alejom23 2:2f8b2690d757 549 tm.mon=mes;
alejom23 2:2f8b2690d757 550 tm.date=dia;
alejom23 2:2f8b2690d757 551 tm.min=minuto;
alejom23 2:2f8b2690d757 552 tm.sec=seg;
alejom23 2:2f8b2690d757 553 tm.hour=hora;
Jepalacioh 0:c2ed510ee88d 554 rtc.setTime(tm, false, false);
Jepalacioh 0:c2ed510ee88d 555 rtc.startClock();
Jepalacioh 0:c2ed510ee88d 556 lcd.cls();
Jepalacioh 0:c2ed510ee88d 557 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 558 lcd.printf("Hora Config. ");
Jepalacioh 0:c2ed510ee88d 559 wait(1);
Jepalacioh 0:c2ed510ee88d 560 i=0;
Jepalacioh 0:c2ed510ee88d 561 m=0;
alejom23 2:2f8b2690d757 562 configurada=1;
Jepalacioh 0:c2ed510ee88d 563 Lugar=0;
Jepalacioh 0:c2ed510ee88d 564 lcd.locate(0,0);
Jepalacioh 0:c2ed510ee88d 565 lcd.printf("--Alarma --Hora");
Jepalacioh 0:c2ed510ee88d 566 }
Jepalacioh 0:c2ed510ee88d 567
Jepalacioh 0:c2ed510ee88d 568 ///////////////////
Jepalacioh 0:c2ed510ee88d 569 }
Jepalacioh 0:c2ed510ee88d 570
Jepalacioh 0:c2ed510ee88d 571 break;
Jepalacioh 0:c2ed510ee88d 572
Jepalacioh 0:c2ed510ee88d 573 }
alejom23 2:2f8b2690d757 574
Jepalacioh 0:c2ed510ee88d 575
Jepalacioh 0:c2ed510ee88d 576 }
alejom23 2:2f8b2690d757 577 }
alejom23 2:2f8b2690d757 578 }
alejom23 2:2f8b2690d757 579
alejom23 2:2f8b2690d757 580 int descanso(int duracion){
alejom23 2:2f8b2690d757 581 Timer t;
alejom23 2:2f8b2690d757 582 t.reset();
alejom23 2:2f8b2690d757 583 t.start();
alejom23 2:2f8b2690d757 584 while(1)
alejom23 2:2f8b2690d757 585 {
alejom23 2:2f8b2690d757 586 led=1;
alejom23 2:2f8b2690d757 587 wait_us(8);
alejom23 2:2f8b2690d757 588 led=0;
alejom23 2:2f8b2690d757 589 led=0;
alejom23 2:2f8b2690d757 590 wait_us(9);
alejom23 2:2f8b2690d757 591 if(t.read_us() > duracion) return 0;
alejom23 2:2f8b2690d757 592
alejom23 2:2f8b2690d757 593 }
alejom23 2:2f8b2690d757 594 }
alejom23 2:2f8b2690d757 595
alejom23 2:2f8b2690d757 596 int sendcode(int numb, int *code, int cabeceraL, int cabeceraH, int Tdescanso, int Tlow, int Thigh)
alejom23 2:2f8b2690d757 597 {
alejom23 2:2f8b2690d757 598 led=0;
alejom23 2:2f8b2690d757 599 wait_ms(100);
alejom23 2:2f8b2690d757 600 descanso(cabeceraL);
alejom23 2:2f8b2690d757 601 wait_us(cabeceraH);
alejom23 2:2f8b2690d757 602
alejom23 2:2f8b2690d757 603 for(i=0;i<numb;i++){
alejom23 2:2f8b2690d757 604 if (code[i]>1000){
alejom23 2:2f8b2690d757 605 led=1;
alejom23 2:2f8b2690d757 606 descanso(Tdescanso);
alejom23 2:2f8b2690d757 607 wait_us(Thigh);
alejom23 2:2f8b2690d757 608 }
alejom23 2:2f8b2690d757 609 if (code[i]<1000){
alejom23 2:2f8b2690d757 610 led=0;
alejom23 2:2f8b2690d757 611 descanso(Tdescanso);
alejom23 2:2f8b2690d757 612 wait_us(Tlow);
alejom23 2:2f8b2690d757 613 }
alejom23 2:2f8b2690d757 614 }
alejom23 2:2f8b2690d757 615 descanso(Tdescanso);
alejom23 2:2f8b2690d757 616 return 0;
alejom23 2:2f8b2690d757 617 }
alejom23 2:2f8b2690d757 618
alejom23 2:2f8b2690d757 619 void pwr(){
alejom23 2:2f8b2690d757 620 for(i=0;i<numb;i++){
alejom23 2:2f8b2690d757 621 code[i]=pwrHY[i];
alejom23 2:2f8b2690d757 622 }
alejom23 2:2f8b2690d757 623 sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
alejom23 2:2f8b2690d757 624 }
alejom23 2:2f8b2690d757 625 //****************************
alejom23 2:2f8b2690d757 626
alejom23 2:2f8b2690d757 627 void repeat(){
alejom23 2:2f8b2690d757 628 wait_ms(42);
alejom23 2:2f8b2690d757 629 descanso(8800);
alejom23 2:2f8b2690d757 630 wait_us(2240);
alejom23 2:2f8b2690d757 631 descanso(560);
alejom23 2:2f8b2690d757 632 }
alejom23 2:2f8b2690d757 633