Reloj Ds1307
Dependencies: DS1307 DebouncedIn TextLCD mbed
main.cpp@0:121cbf1d2c0a, 2014-05-14 (annotated)
- Committer:
- mescobart22
- Date:
- Wed May 14 14:18:08 2014 +0000
- Revision:
- 0:121cbf1d2c0a
Tarea Reloj Ds1307; activa y desactiva alarma, ademas se puede modificar y cuadrar la hora.; Mauricio Escobar Tobon- Breiner Choles
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mescobart22 | 0:121cbf1d2c0a | 1 | #include "ds1307.h" |
mescobart22 | 0:121cbf1d2c0a | 2 | #include "TextLCD.h" |
mescobart22 | 0:121cbf1d2c0a | 3 | #include "mbed.h" |
mescobart22 | 0:121cbf1d2c0a | 4 | #include "DebouncedIn.h" |
mescobart22 | 0:121cbf1d2c0a | 5 | //Mauricio Escobar Tobon Breiner Choles |
mescobart22 | 0:121cbf1d2c0a | 6 | Serial pc(USBTX, USBRX); // tx, rx for debug and usb pc comunications |
mescobart22 | 0:121cbf1d2c0a | 7 | //TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD40x2); // rs, e, d4-d7 |
mescobart22 | 0:121cbf1d2c0a | 8 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); |
mescobart22 | 0:121cbf1d2c0a | 9 | DS1307 my1307(PTE0,PTE1); // start DS1307 class and give it pins for connections of the DS1307 device |
mescobart22 | 0:121cbf1d2c0a | 10 | DebouncedIn p1(PTE20); |
mescobart22 | 0:121cbf1d2c0a | 11 | DebouncedIn p2(PTE21); |
mescobart22 | 0:121cbf1d2c0a | 12 | DebouncedIn p3(PTE22); |
mescobart22 | 0:121cbf1d2c0a | 13 | int contador = 1; |
mescobart22 | 0:121cbf1d2c0a | 14 | int contador2 = 0; |
mescobart22 | 0:121cbf1d2c0a | 15 | int horas1; |
mescobart22 | 0:121cbf1d2c0a | 16 | int min1=-1; |
mescobart22 | 0:121cbf1d2c0a | 17 | int sec1=0; |
mescobart22 | 0:121cbf1d2c0a | 18 | int column; |
mescobart22 | 0:121cbf1d2c0a | 19 | int fila; |
mescobart22 | 0:121cbf1d2c0a | 20 | int C2=0x18; // desplaza izquierda |
mescobart22 | 0:121cbf1d2c0a | 21 | int C3=0x1A; // desplaza derecha |
mescobart22 | 0:121cbf1d2c0a | 22 | int C4=0x0C; // quito cursor bajo |
mescobart22 | 0:121cbf1d2c0a | 23 | int C1=0x0F; |
mescobart22 | 0:121cbf1d2c0a | 24 | |
mescobart22 | 0:121cbf1d2c0a | 25 | DigitalOut sound(PTC5); //Salida de Audio Digital |
mescobart22 | 0:121cbf1d2c0a | 26 | bool k=false; //bandera que indica que la alarma esta o no activada |
mescobart22 | 0:121cbf1d2c0a | 27 | bool on=false; //Bandera que indica que la alarma esta o no sonando |
mescobart22 | 0:121cbf1d2c0a | 28 | bool apagar=false; |
mescobart22 | 0:121cbf1d2c0a | 29 | int sec = 48; // Values to set time with |
mescobart22 | 0:121cbf1d2c0a | 30 | int min = 59; |
mescobart22 | 0:121cbf1d2c0a | 31 | int horas = 06; |
mescobart22 | 0:121cbf1d2c0a | 32 | int dia = 2; |
mescobart22 | 0:121cbf1d2c0a | 33 | int date = 12; |
mescobart22 | 0:121cbf1d2c0a | 34 | int mes = 5; |
mescobart22 | 0:121cbf1d2c0a | 35 | int anio = 16; |
mescobart22 | 0:121cbf1d2c0a | 36 | int loop = 10; // Non zero value for the while loop |
mescobart22 | 0:121cbf1d2c0a | 37 | |
mescobart22 | 0:121cbf1d2c0a | 38 | |
mescobart22 | 0:121cbf1d2c0a | 39 | void test_rw(int test) { |
mescobart22 | 0:121cbf1d2c0a | 40 | if (test == 0) pc.printf("Last R/W operation passed!\n\r"); |
mescobart22 | 0:121cbf1d2c0a | 41 | else pc.printf("Last R/W operation failed!\n\r"); |
mescobart22 | 0:121cbf1d2c0a | 42 | } |
mescobart22 | 0:121cbf1d2c0a | 43 | |
mescobart22 | 0:121cbf1d2c0a | 44 | int main() { |
mescobart22 | 0:121cbf1d2c0a | 45 | |
mescobart22 | 0:121cbf1d2c0a | 46 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 47 | |
mescobart22 | 0:121cbf1d2c0a | 48 | |
mescobart22 | 0:121cbf1d2c0a | 49 | while (loop>0){ // Loop continously |
mescobart22 | 0:121cbf1d2c0a | 50 | test_rw(my1307.gettime( &sec, &min, &horas, &dia, &date, &mes, &anio)); |
mescobart22 | 0:121cbf1d2c0a | 51 | lcd.locate(0,0); // Print and refresh data on line 2 of the LCD display |
mescobart22 | 0:121cbf1d2c0a | 52 | lcd.printf("%.2D",horas); |
mescobart22 | 0:121cbf1d2c0a | 53 | lcd.printf(":%.2D",min); |
mescobart22 | 0:121cbf1d2c0a | 54 | lcd.printf(":%.2D",sec); |
mescobart22 | 0:121cbf1d2c0a | 55 | lcd.locate(0,1); |
mescobart22 | 0:121cbf1d2c0a | 56 | lcd.printf("%.2D",mes); |
mescobart22 | 0:121cbf1d2c0a | 57 | lcd.printf("/%.2D",date); |
mescobart22 | 0:121cbf1d2c0a | 58 | lcd.printf("/%.2D",anio); |
mescobart22 | 0:121cbf1d2c0a | 59 | |
mescobart22 | 0:121cbf1d2c0a | 60 | |
mescobart22 | 0:121cbf1d2c0a | 61 | //Presionar Pulsador 1 |
mescobart22 | 0:121cbf1d2c0a | 62 | if(p1.falling()){ //Configurar Hora |
mescobart22 | 0:121cbf1d2c0a | 63 | |
mescobart22 | 0:121cbf1d2c0a | 64 | if(k==true & apagar==false){ //Stop Alarm, recuerda agregar mensaje de pausa |
mescobart22 | 0:121cbf1d2c0a | 65 | k =false; |
mescobart22 | 0:121cbf1d2c0a | 66 | wait(1); |
mescobart22 | 0:121cbf1d2c0a | 67 | if(p1==0){ |
mescobart22 | 0:121cbf1d2c0a | 68 | apagar = true; |
mescobart22 | 0:121cbf1d2c0a | 69 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 70 | lcd.printf("Alarm Desact"); |
mescobart22 | 0:121cbf1d2c0a | 71 | wait(1); |
mescobart22 | 0:121cbf1d2c0a | 72 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 73 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 74 | lcd.locate(0,1); |
mescobart22 | 0:121cbf1d2c0a | 75 | lcd.printf("Alarm Desact"); |
mescobart22 | 0:121cbf1d2c0a | 76 | wait(1); |
mescobart22 | 0:121cbf1d2c0a | 77 | lcd.locate(0,1); |
mescobart22 | 0:121cbf1d2c0a | 78 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 79 | horas1=0; |
mescobart22 | 0:121cbf1d2c0a | 80 | min1=0; |
mescobart22 | 0:121cbf1d2c0a | 81 | sec1=0; |
mescobart22 | 0:121cbf1d2c0a | 82 | }//cierro p1==0 |
mescobart22 | 0:121cbf1d2c0a | 83 | if(apagar==false){ |
mescobart22 | 0:121cbf1d2c0a | 84 | sec1=sec+10; |
mescobart22 | 0:121cbf1d2c0a | 85 | if(sec1>59){ |
mescobart22 | 0:121cbf1d2c0a | 86 | min1 = min1 +1; |
mescobart22 | 0:121cbf1d2c0a | 87 | sec1 = sec1-60; |
mescobart22 | 0:121cbf1d2c0a | 88 | lcd.locate(9,1); |
mescobart22 | 0:121cbf1d2c0a | 89 | lcd.printf("M.A: %.2d",min1); //actualiza, Minutos de Alarma En pantalla |
mescobart22 | 0:121cbf1d2c0a | 90 | }//cierro if sec > 59 |
mescobart22 | 0:121cbf1d2c0a | 91 | |
mescobart22 | 0:121cbf1d2c0a | 92 | }//cierro Apagar == false |
mescobart22 | 0:121cbf1d2c0a | 93 | }//cierro k = true && apagar == false |
mescobart22 | 0:121cbf1d2c0a | 94 | |
mescobart22 | 0:121cbf1d2c0a | 95 | |
mescobart22 | 0:121cbf1d2c0a | 96 | if(contador ==2){ |
mescobart22 | 0:121cbf1d2c0a | 97 | |
mescobart22 | 0:121cbf1d2c0a | 98 | //lcd.locate(9,0); |
mescobart22 | 0:121cbf1d2c0a | 99 | ++horas; |
mescobart22 | 0:121cbf1d2c0a | 100 | |
mescobart22 | 0:121cbf1d2c0a | 101 | if(horas>23){//ajuste de hora |
mescobart22 | 0:121cbf1d2c0a | 102 | horas = 0; |
mescobart22 | 0:121cbf1d2c0a | 103 | }//Fin if horas >23 |
mescobart22 | 0:121cbf1d2c0a | 104 | |
mescobart22 | 0:121cbf1d2c0a | 105 | //lcd.printf("Hora: %.2D ", hours); |
mescobart22 | 0:121cbf1d2c0a | 106 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 107 | //wait(0.5); |
mescobart22 | 0:121cbf1d2c0a | 108 | |
mescobart22 | 0:121cbf1d2c0a | 109 | |
mescobart22 | 0:121cbf1d2c0a | 110 | }//Cierro if contador ==2 |
mescobart22 | 0:121cbf1d2c0a | 111 | |
mescobart22 | 0:121cbf1d2c0a | 112 | if(contador == 3){ |
mescobart22 | 0:121cbf1d2c0a | 113 | ++min; |
mescobart22 | 0:121cbf1d2c0a | 114 | |
mescobart22 | 0:121cbf1d2c0a | 115 | if(min>59){ //Ajuste de minutos |
mescobart22 | 0:121cbf1d2c0a | 116 | min = 0; |
mescobart22 | 0:121cbf1d2c0a | 117 | } //cierro if min > 59 |
mescobart22 | 0:121cbf1d2c0a | 118 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 119 | } //Cierro if contador ==3 |
mescobart22 | 0:121cbf1d2c0a | 120 | |
mescobart22 | 0:121cbf1d2c0a | 121 | if(contador == 4){//configurar mes |
mescobart22 | 0:121cbf1d2c0a | 122 | ++mes; |
mescobart22 | 0:121cbf1d2c0a | 123 | if(mes > 12){ //ajuste de meses |
mescobart22 | 0:121cbf1d2c0a | 124 | mes =1; |
mescobart22 | 0:121cbf1d2c0a | 125 | }//cierro mont > 12 |
mescobart22 | 0:121cbf1d2c0a | 126 | |
mescobart22 | 0:121cbf1d2c0a | 127 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 128 | }//cierro contador ==4 |
mescobart22 | 0:121cbf1d2c0a | 129 | |
mescobart22 | 0:121cbf1d2c0a | 130 | |
mescobart22 | 0:121cbf1d2c0a | 131 | if(contador ==5){ |
mescobart22 | 0:121cbf1d2c0a | 132 | ++date; |
mescobart22 | 0:121cbf1d2c0a | 133 | if(mes==1 || mes ==3 || mes == 5 || mes == 7 || mes ==8 || mes ==10 || mes ==12 ){//ajuste de 31 dias |
mescobart22 | 0:121cbf1d2c0a | 134 | if(date > 31){ |
mescobart22 | 0:121cbf1d2c0a | 135 | date=01; |
mescobart22 | 0:121cbf1d2c0a | 136 | }//Cierro dia >31 |
mescobart22 | 0:121cbf1d2c0a | 137 | }//cierro condicion meses con 31 dias |
mescobart22 | 0:121cbf1d2c0a | 138 | |
mescobart22 | 0:121cbf1d2c0a | 139 | if( mes ==4 || mes == 6 || mes == 9 || mes ==11){//ajuste de 30 dias |
mescobart22 | 0:121cbf1d2c0a | 140 | if(date >30){ |
mescobart22 | 0:121cbf1d2c0a | 141 | date=01; |
mescobart22 | 0:121cbf1d2c0a | 142 | }//Cierro dia >30 |
mescobart22 | 0:121cbf1d2c0a | 143 | }//Cierro condicion meses de 30 dias |
mescobart22 | 0:121cbf1d2c0a | 144 | |
mescobart22 | 0:121cbf1d2c0a | 145 | if(mes==2 ){//ajuste de 28 dias |
mescobart22 | 0:121cbf1d2c0a | 146 | |
mescobart22 | 0:121cbf1d2c0a | 147 | if((anio+2000) % 4 ==0){ //configuracion año viciesto |
mescobart22 | 0:121cbf1d2c0a | 148 | if(date >29){ |
mescobart22 | 0:121cbf1d2c0a | 149 | date=1; |
mescobart22 | 0:121cbf1d2c0a | 150 | }//cierro if date> 29 |
mescobart22 | 0:121cbf1d2c0a | 151 | |
mescobart22 | 0:121cbf1d2c0a | 152 | |
mescobart22 | 0:121cbf1d2c0a | 153 | }//Cierro año viciesto |
mescobart22 | 0:121cbf1d2c0a | 154 | |
mescobart22 | 0:121cbf1d2c0a | 155 | if((anio+2000) % 4 != 0){ //configuracion año viciesto |
mescobart22 | 0:121cbf1d2c0a | 156 | if(date >28){ |
mescobart22 | 0:121cbf1d2c0a | 157 | date=1; |
mescobart22 | 0:121cbf1d2c0a | 158 | }//cierro if date> 28 |
mescobart22 | 0:121cbf1d2c0a | 159 | |
mescobart22 | 0:121cbf1d2c0a | 160 | |
mescobart22 | 0:121cbf1d2c0a | 161 | }//Cierro año NO viciesto |
mescobart22 | 0:121cbf1d2c0a | 162 | |
mescobart22 | 0:121cbf1d2c0a | 163 | |
mescobart22 | 0:121cbf1d2c0a | 164 | }//cierro if month ==2 |
mescobart22 | 0:121cbf1d2c0a | 165 | |
mescobart22 | 0:121cbf1d2c0a | 166 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 167 | }//cierro if contador ==5 |
mescobart22 | 0:121cbf1d2c0a | 168 | |
mescobart22 | 0:121cbf1d2c0a | 169 | if(contador == 6){ //Aumentar años |
mescobart22 | 0:121cbf1d2c0a | 170 | ++anio; |
mescobart22 | 0:121cbf1d2c0a | 171 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 172 | }//cierro if contador ==6 |
mescobart22 | 0:121cbf1d2c0a | 173 | |
mescobart22 | 0:121cbf1d2c0a | 174 | |
mescobart22 | 0:121cbf1d2c0a | 175 | //Configuracin De Alarma |
mescobart22 | 0:121cbf1d2c0a | 176 | if(contador2==1){ |
mescobart22 | 0:121cbf1d2c0a | 177 | horas1++; |
mescobart22 | 0:121cbf1d2c0a | 178 | if(horas1>23){ |
mescobart22 | 0:121cbf1d2c0a | 179 | horas1= 0; |
mescobart22 | 0:121cbf1d2c0a | 180 | }//Cierro hours1>23 |
mescobart22 | 0:121cbf1d2c0a | 181 | lcd.locate(9,0); |
mescobart22 | 0:121cbf1d2c0a | 182 | lcd.printf("H.A: %.2d",horas1); |
mescobart22 | 0:121cbf1d2c0a | 183 | }//Cierro if contador2==1 |
mescobart22 | 0:121cbf1d2c0a | 184 | |
mescobart22 | 0:121cbf1d2c0a | 185 | if(contador2==2){ |
mescobart22 | 0:121cbf1d2c0a | 186 | min1++; |
mescobart22 | 0:121cbf1d2c0a | 187 | if(min1>59){ |
mescobart22 | 0:121cbf1d2c0a | 188 | min1= 0; |
mescobart22 | 0:121cbf1d2c0a | 189 | }//Cierro hours1>23 |
mescobart22 | 0:121cbf1d2c0a | 190 | lcd.locate(9,1); |
mescobart22 | 0:121cbf1d2c0a | 191 | lcd.printf("M.A: %.2d",min1); |
mescobart22 | 0:121cbf1d2c0a | 192 | |
mescobart22 | 0:121cbf1d2c0a | 193 | }//Cierro if contador2==1 |
mescobart22 | 0:121cbf1d2c0a | 194 | |
mescobart22 | 0:121cbf1d2c0a | 195 | |
mescobart22 | 0:121cbf1d2c0a | 196 | }//Fin p1.falling |
mescobart22 | 0:121cbf1d2c0a | 197 | |
mescobart22 | 0:121cbf1d2c0a | 198 | //Presionar Pulsador 2 |
mescobart22 | 0:121cbf1d2c0a | 199 | if(p2.falling()){ //Reset |
mescobart22 | 0:121cbf1d2c0a | 200 | contador = contador+1; |
mescobart22 | 0:121cbf1d2c0a | 201 | |
mescobart22 | 0:121cbf1d2c0a | 202 | |
mescobart22 | 0:121cbf1d2c0a | 203 | if(contador>0){ |
mescobart22 | 0:121cbf1d2c0a | 204 | contador2=0; |
mescobart22 | 0:121cbf1d2c0a | 205 | } |
mescobart22 | 0:121cbf1d2c0a | 206 | |
mescobart22 | 0:121cbf1d2c0a | 207 | if(contador ==1){ |
mescobart22 | 0:121cbf1d2c0a | 208 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 209 | lcd.printf("1-Reset"); |
mescobart22 | 0:121cbf1d2c0a | 210 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 211 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 212 | }//cierro if contador ==1 |
mescobart22 | 0:121cbf1d2c0a | 213 | |
mescobart22 | 0:121cbf1d2c0a | 214 | if(contador==2){ //configurar Hora |
mescobart22 | 0:121cbf1d2c0a | 215 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 216 | |
mescobart22 | 0:121cbf1d2c0a | 217 | lcd.printf("2-Conf. hora"); |
mescobart22 | 0:121cbf1d2c0a | 218 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 219 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 220 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 221 | |
mescobart22 | 0:121cbf1d2c0a | 222 | }//Cierro if contador ==2 |
mescobart22 | 0:121cbf1d2c0a | 223 | |
mescobart22 | 0:121cbf1d2c0a | 224 | if(contador==3){ //configurar minutos |
mescobart22 | 0:121cbf1d2c0a | 225 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 226 | |
mescobart22 | 0:121cbf1d2c0a | 227 | lcd.printf("3-Conf. Min"); |
mescobart22 | 0:121cbf1d2c0a | 228 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 229 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 230 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 231 | |
mescobart22 | 0:121cbf1d2c0a | 232 | }//Cierro if contador ==3 |
mescobart22 | 0:121cbf1d2c0a | 233 | |
mescobart22 | 0:121cbf1d2c0a | 234 | if(contador ==4){ |
mescobart22 | 0:121cbf1d2c0a | 235 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 236 | lcd.printf("4-Conf. Mes"); |
mescobart22 | 0:121cbf1d2c0a | 237 | |
mescobart22 | 0:121cbf1d2c0a | 238 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 239 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 240 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 241 | }//cierro if contador ==4 |
mescobart22 | 0:121cbf1d2c0a | 242 | |
mescobart22 | 0:121cbf1d2c0a | 243 | if(contador == 5){ |
mescobart22 | 0:121cbf1d2c0a | 244 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 245 | lcd.printf("5-Conf. Dia"); |
mescobart22 | 0:121cbf1d2c0a | 246 | |
mescobart22 | 0:121cbf1d2c0a | 247 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 248 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 249 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 250 | |
mescobart22 | 0:121cbf1d2c0a | 251 | }//Cierro if contador == 5 |
mescobart22 | 0:121cbf1d2c0a | 252 | |
mescobart22 | 0:121cbf1d2c0a | 253 | if(contador ==6){ |
mescobart22 | 0:121cbf1d2c0a | 254 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 255 | lcd.printf("5-Conf. año"); //Se aumentan años en p1 y se disminuyen con p3 (ver p3 debajo) |
mescobart22 | 0:121cbf1d2c0a | 256 | |
mescobart22 | 0:121cbf1d2c0a | 257 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 258 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 259 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 260 | }//Cierro if contador ==6 |
mescobart22 | 0:121cbf1d2c0a | 261 | |
mescobart22 | 0:121cbf1d2c0a | 262 | if(contador>6){ //Reset Contador |
mescobart22 | 0:121cbf1d2c0a | 263 | contador =1; |
mescobart22 | 0:121cbf1d2c0a | 264 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 265 | lcd.printf("Config. Correct"); |
mescobart22 | 0:121cbf1d2c0a | 266 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 267 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 268 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 269 | }//Cierro contador > 6 |
mescobart22 | 0:121cbf1d2c0a | 270 | |
mescobart22 | 0:121cbf1d2c0a | 271 | }//Cierro if p2.falling() |
mescobart22 | 0:121cbf1d2c0a | 272 | |
mescobart22 | 0:121cbf1d2c0a | 273 | //Presionar Pulsador 3 |
mescobart22 | 0:121cbf1d2c0a | 274 | if(p3.falling()){ |
mescobart22 | 0:121cbf1d2c0a | 275 | |
mescobart22 | 0:121cbf1d2c0a | 276 | if(contador==6){ |
mescobart22 | 0:121cbf1d2c0a | 277 | --anio; |
mescobart22 | 0:121cbf1d2c0a | 278 | test_rw(my1307.settime( sec, min, horas, dia, date, mes, anio)); // Set the time on the DS1307 |
mescobart22 | 0:121cbf1d2c0a | 279 | contador2=0; |
mescobart22 | 0:121cbf1d2c0a | 280 | |
mescobart22 | 0:121cbf1d2c0a | 281 | }//Cierro if contador == 6 |
mescobart22 | 0:121cbf1d2c0a | 282 | |
mescobart22 | 0:121cbf1d2c0a | 283 | if(contador != 6){ |
mescobart22 | 0:121cbf1d2c0a | 284 | |
mescobart22 | 0:121cbf1d2c0a | 285 | contador=1; //Se asegura que no interceda a configurar la hora como loco cuando se configura la alarma |
mescobart22 | 0:121cbf1d2c0a | 286 | contador2++; |
mescobart22 | 0:121cbf1d2c0a | 287 | if(contador2==1){ |
mescobart22 | 0:121cbf1d2c0a | 288 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 289 | lcd.printf("Alarm Hour"); |
mescobart22 | 0:121cbf1d2c0a | 290 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 291 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 292 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 293 | } //cierro contador2 ==1 |
mescobart22 | 0:121cbf1d2c0a | 294 | |
mescobart22 | 0:121cbf1d2c0a | 295 | if(contador2==2){ |
mescobart22 | 0:121cbf1d2c0a | 296 | lcd.locate(0,1); |
mescobart22 | 0:121cbf1d2c0a | 297 | lcd.printf("Alarm Minutes"); |
mescobart22 | 0:121cbf1d2c0a | 298 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 299 | lcd.locate(0,1); |
mescobart22 | 0:121cbf1d2c0a | 300 | lcd.printf(" "); |
mescobart22 | 0:121cbf1d2c0a | 301 | } //cierro contador2 ==1 |
mescobart22 | 0:121cbf1d2c0a | 302 | |
mescobart22 | 0:121cbf1d2c0a | 303 | if(contador2>2){ |
mescobart22 | 0:121cbf1d2c0a | 304 | contador2=0; |
mescobart22 | 0:121cbf1d2c0a | 305 | lcd.locate(0,0); |
mescobart22 | 0:121cbf1d2c0a | 306 | lcd.printf("Activate"); |
mescobart22 | 0:121cbf1d2c0a | 307 | wait(0.6); |
mescobart22 | 0:121cbf1d2c0a | 308 | k = true; //alarma activada |
mescobart22 | 0:121cbf1d2c0a | 309 | apagar=false; |
mescobart22 | 0:121cbf1d2c0a | 310 | }//cierro if contador2 >2 |
mescobart22 | 0:121cbf1d2c0a | 311 | |
mescobart22 | 0:121cbf1d2c0a | 312 | }//Cierro contador != 6 |
mescobart22 | 0:121cbf1d2c0a | 313 | |
mescobart22 | 0:121cbf1d2c0a | 314 | }//cierro if p3.falling() |
mescobart22 | 0:121cbf1d2c0a | 315 | |
mescobart22 | 0:121cbf1d2c0a | 316 | //Activacion De Alarma |
mescobart22 | 0:121cbf1d2c0a | 317 | if(horas == horas1 && k == true && apagar ==false){ |
mescobart22 | 0:121cbf1d2c0a | 318 | if(min == min1){ |
mescobart22 | 0:121cbf1d2c0a | 319 | if(sec>=sec1 && sec<=(sec1+10)){ |
mescobart22 | 0:121cbf1d2c0a | 320 | on = true; |
mescobart22 | 0:121cbf1d2c0a | 321 | sound = 0; |
mescobart22 | 0:121cbf1d2c0a | 322 | for(int i=1; i<= 1000; ++i){ //ONDA CUADRADA, OSCILACIONES A 10 KHZ.... A VER SI FUNCIONA |
mescobart22 | 0:121cbf1d2c0a | 323 | sound = 0; |
mescobart22 | 0:121cbf1d2c0a | 324 | wait(0.0001); // Medio ciclo de dureza Arriba |
mescobart22 | 0:121cbf1d2c0a | 325 | sound=1; |
mescobart22 | 0:121cbf1d2c0a | 326 | wait(0.0001); // Medio ciclo Abajo |
mescobart22 | 0:121cbf1d2c0a | 327 | |
mescobart22 | 0:121cbf1d2c0a | 328 | if(k==false){ |
mescobart22 | 0:121cbf1d2c0a | 329 | break; |
mescobart22 | 0:121cbf1d2c0a | 330 | }//cierro if on==false |
mescobart22 | 0:121cbf1d2c0a | 331 | }//Cierro For |
mescobart22 | 0:121cbf1d2c0a | 332 | |
mescobart22 | 0:121cbf1d2c0a | 333 | }//Cierro Sec>=0 && sec <30 |
mescobart22 | 0:121cbf1d2c0a | 334 | }//Cierro min == min1 |
mescobart22 | 0:121cbf1d2c0a | 335 | |
mescobart22 | 0:121cbf1d2c0a | 336 | }//cierro horas==hours1 |
mescobart22 | 0:121cbf1d2c0a | 337 | |
mescobart22 | 0:121cbf1d2c0a | 338 | if(sec1>0 & k==false){ //alarma encendida, reactiva k para poder iniciar nuevamente cuando el tiempo se alcance otra vez |
mescobart22 | 0:121cbf1d2c0a | 339 | k = true; |
mescobart22 | 0:121cbf1d2c0a | 340 | }//Cierro if sec1>0 |
mescobart22 | 0:121cbf1d2c0a | 341 | |
mescobart22 | 0:121cbf1d2c0a | 342 | } //Cierro While loop >0 |
mescobart22 | 0:121cbf1d2c0a | 343 | |
mescobart22 | 0:121cbf1d2c0a | 344 | |
mescobart22 | 0:121cbf1d2c0a | 345 | |
mescobart22 | 0:121cbf1d2c0a | 346 | }//Cierro Main() |
mescobart22 | 0:121cbf1d2c0a | 347 | |
mescobart22 | 0:121cbf1d2c0a | 348 | |
mescobart22 | 0:121cbf1d2c0a | 349 | |
mescobart22 | 0:121cbf1d2c0a | 350 |