trabajo de creacion de un despertador por i2c configurado por un encoder
Dependencies: DebouncedIn QEI RTC-DS1307 mbed
Fork of I2C by
Revision 5:d38b972a1813, committed 2015-11-23
- Comitter:
- GermanD
- Date:
- Mon Nov 23 14:44:24 2015 +0000
- Parent:
- 4:fa48e78e9bba
- Commit message:
- Tarea para configurar una alarma despertadora en el mes, a?o y hora que elijamos
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r fa48e78e9bba -r d38b972a1813 main.cpp --- a/main.cpp Fri Nov 20 13:49:02 2015 +0000 +++ b/main.cpp Mon Nov 23 14:44:24 2015 +0000 @@ -7,7 +7,7 @@ Serial pc(USBTX, USBRX, "pc"); //Puertos para el PC QEI wheel (PTD5, PTD0, NC, 100); //Configuracion encoder DebouncedIn Boton(PTA13); //Boton Encoder -DigitalOut led1(LED1); //Salida +DigitalOut led1(PTD2); //Salida int Dia=0; int Mes=0; @@ -28,10 +28,10 @@ { pc.printf("*************************************\n"); pc.printf("* Menu for RTC Test : *\n"); - pc.printf("* read - reads the clock *\n"); - pc.printf("* start - start the clock *\n"); - pc.printf("* stop - stop the clock *\n"); - pc.printf("* write - write the clock *\n"); + pc.printf("* leer - reads the clock *\n"); + pc.printf("* empezar - start the clock *\n"); + pc.printf("* parar - stop the clock *\n"); + pc.printf("* configurar - write the clock *\n"); pc.printf("* ena - enable Square wave output *\n"); pc.printf("* dis - disable square wave outp. *\n"); pc.printf("*************************************\n"); @@ -41,45 +41,50 @@ buffer[readptr++] = c; } buffer[readptr++] = 0; - if (strncmp(buffer, "read", 4) == 0) + + // para leer los valores que tiene el reloj + + if (strncmp(buffer, "leer", 4) == 0) { pc.printf("Performing read operation\n"); if (rtc.getTime(tm) ) { - pc.printf("La hora actual es: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); - pc.printf("La fecha actual es: %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year); + pc.printf("La hora es: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); // coloca en pantalla la hora actual que hay almacenada + pc.printf("La fecha es: %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year); // coloca en pantalla la fecha actual que hay almacenada } } - else if (strncmp(buffer, "write", 5) == 0) - { + else if (strncmp(buffer, "configurar", 5) == 0) // se empieza por configurar el reloj interno pc.printf("Dia (0..31)"); - pc.scanf("%d", &tm.date); + pc.scanf("%d", &tm.date); // coloca lo que uno le ingrese como dia pc.printf("Mes (1..12)"); - pc.scanf("%d", &tm.mon); - pc.printf("Anno"); - pc.scanf("%d", &tm.year); + pc.scanf("%d", &tm.mon); // coloca lo que uno le ingrese como mes + pc.printf("Anio"); + pc.scanf("%d", &tm.year); // coloca lo que uno le ingrese como año pc.printf("Hora (0..23)"); - pc.scanf("%d", &tm.hour); + pc.scanf("%d", &tm.hour); // coloca lo que uno le ingrese como hora pc.printf("Minutos (0..59)"); - pc.scanf("%d", &tm.min); + pc.scanf("%d", &tm.min); // coloca lo que uno le ingrese como minutos pc.printf("Segundos (0..59)"); - pc.scanf("%d", &tm.sec); + pc.scanf("%d", &tm.sec); // coloca lo que uno le ingrese como segundos pc.printf("Performing write operation\n"); while(pc.readable()) pc.getc(); rtc.setTime(tm, false, false); } - else if (strncmp(buffer, "start", 5) == 0) + + // para empezar a correr el reloj que se programó arriba + + else if (strncmp(buffer, "empezar", 5) == 0) { readptr = 0; pc.printf("Dispositivo Iniciado\n"); rtc.startClock(); - goto set_alarma; + goto alarma; } - else if (strncmp(buffer, "stop", 4) == 0) + else if (strncmp(buffer, "parar", 4) == 0) // para parar el reloj { pc.printf("Performing stop operation\n"); rtc.stopClock(); @@ -103,12 +108,14 @@ } readptr = 0; } - - set_alarma: //se inicia a configurar la alarma + + //se inicia a configurar la alarma + + alarma: pc.printf("Configuracion de la alarma\n"); - set_Dia: //empieza con el dia + Dia: //empieza con el dia while(1) { Dia=Dia+wheel.getPulses(); //con el encoder se aumenta el dia @@ -119,19 +126,19 @@ Dia=31; } else if (Dia<=0) - { //no hay dias negativos, el valor se mantiene en 0 en caso de ingresar uno asi + { //no se pueden ingresar numeros negativos Dia=0; } - pc.printf("Dia= %d\n",Dia); //muestra + pc.printf("Dia= %d\n",Dia); //muestra el valor if(Boton.falling()) - { //con el enconder presionado pasamos a mes - goto set_Mes; + { //presionando el encoder cambiamos al configurar el mes + goto Mes; } } -set_Mes: //Configuracion del Mes para la alarma +Mes: //Configuracion del Mes para la alarma while(1) { @@ -144,7 +151,7 @@ Mes=12; } else if (Mes<=0) - { //de igual forma mantiene en 0 a un valor menor + { //se mantiene en 0 Mes=0; } pc.printf("Mes= %d\n ",Mes); //muestra el mes @@ -152,35 +159,36 @@ if(Boton.falling()) { - goto set_Anio; + goto Anio; } } - set_Anio: + + Anio: while(1) { Anio=Anio+wheel.getPulses(); wheel.reset(); - if(Anio>=3000) //se mantiene hasta el anio 3000 si se ingresa un anio mas grande + if(Anio>=3000) //se mantiene hasta el año 3000 si se ingresa un año mas grande { Anio=3000; } else if (Anio<=2015){ //como estamos en el 2015 una alarma no puede sonar antes de esa fecha Anio=2015; } - pc.printf("Anno= %d\n",Anio); + pc.printf("Anio= %d\n",Anio); - if(Boton.falling()) + if(Boton.falling()) //presionando el encoder cambiamos a configurar la hora { - goto set_Horas; + goto Horas; } } - set_Horas: + Horas: while(1) { @@ -199,13 +207,13 @@ pc.printf(" Hora=%d\n ",Horas); - if(Boton.falling()){ - goto set_Minutos; + if(Boton.falling()){ //presionando el encoder cambiamos a configurar los minutos + goto Minutos; } } - set_Minutos: + Minutos: while(1) { @@ -221,29 +229,31 @@ { Minutos=0; } - pc.printf(" Min=%d\n ",Minutos); + pc.printf(" Minuto=%d\n ",Minutos); if(Boton.falling()) { - goto set_comp; + goto comp; } } - set_comp: + comp: // para que muestre cuándo quedó configurada la alarma pc.printf("La alarma se programara el: \n"); - pc.printf(" Dia=%d Mes=%d Anio=%d Hora=%d Min=%d Seg=%d\n ",Dia,Mes,Anio,Horas,Minutos,Segundos); + pc.printf(" Dia=%d Mes=%d Anio=%d Hora=%d Minuto=%d Segundo=%d\n ",Dia,Mes,Anio,Horas,Minutos,Segundos); + + wait (3); while(1) { rtc.getTime(tm); - pc.printf("La hora actual es: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); - pc.printf("La fecha actual es: %02d/%02d/%04d\n", tm.mon, tm.date, tm.year); + pc.printf("Hora actual: %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); + pc.printf("Fecha actual: %02d/%02d/%04d\n", tm.mon, tm.date, tm.year); if(tm.hour>=Horas && tm.min>=Minutos &&tm.sec>=Segundos && tm.mon>=Mes && tm.date>=Dia && tm.year>=Anio){ led1=0; - pc.printf("La alarma se ha activado: \n"); + // pc.printf("La alarma se ha activado: \n"); } else { led1=1;