Reloj

Dependencies:   mbed

Committer:
javiervicente
Date:
Thu Dec 09 23:12:37 2021 +0000
Revision:
1:987fe977d122
Parent:
0:4182cf86e3bd
rejos

Who changed what in which revision?

UserRevisionLine numberNew contents of line
javiervicente 0:4182cf86e3bd 1 #include "mbed.h"
javiervicente 0:4182cf86e3bd 2
javiervicente 0:4182cf86e3bd 3 #define botonPulsado 0
javiervicente 0:4182cf86e3bd 4 #define botonNoPulsado 1
javiervicente 0:4182cf86e3bd 5 #define tiempoMaximo 0.5
javiervicente 0:4182cf86e3bd 6
javiervicente 1:987fe977d122 7 int horas=0;
javiervicente 1:987fe977d122 8 int minutos=0;
javiervicente 1:987fe977d122 9 int segundos=0;
javiervicente 0:4182cf86e3bd 10
javiervicente 0:4182cf86e3bd 11 Serial pc(USBTX, USBRX); // tx, rx
javiervicente 0:4182cf86e3bd 12
javiervicente 0:4182cf86e3bd 13 DigitalOut led(LED1);
javiervicente 0:4182cf86e3bd 14 DigitalIn boton(USER_BUTTON);
javiervicente 0:4182cf86e3bd 15 Timer temporizador;
javiervicente 1:987fe977d122 16 Timer tiempoPulsado;
javiervicente 1:987fe977d122 17
javiervicente 1:987fe977d122 18 enum estados {normal,esperandoSoltarConf,esperandoPulsarHoras,esperandoSoltarHoras,esperandoPulsarMin,esperandoSoltarMin};
javiervicente 0:4182cf86e3bd 19 estados estado;
javiervicente 0:4182cf86e3bd 20
javiervicente 1:987fe977d122 21 void intrementarReloj()
javiervicente 0:4182cf86e3bd 22 {
javiervicente 1:987fe977d122 23 if(temporizador>1.0) {
javiervicente 0:4182cf86e3bd 24 temporizador.reset();
javiervicente 1:987fe977d122 25 segundos++;
javiervicente 1:987fe977d122 26 if (segundos==60) {
javiervicente 1:987fe977d122 27 segundos=0;
javiervicente 1:987fe977d122 28 minutos++;
javiervicente 1:987fe977d122 29 if(minutos==60) {
javiervicente 1:987fe977d122 30 minutos=0;
javiervicente 1:987fe977d122 31 horas++;
javiervicente 1:987fe977d122 32 if(horas==24) {
javiervicente 1:987fe977d122 33 horas=0;
javiervicente 1:987fe977d122 34 }
javiervicente 1:987fe977d122 35 }
javiervicente 1:987fe977d122 36 }
javiervicente 1:987fe977d122 37 }
javiervicente 1:987fe977d122 38 pc.printf("%02d:%02d:%02d\n",horas,minutos,segundos);
javiervicente 1:987fe977d122 39 }
javiervicente 1:987fe977d122 40
javiervicente 1:987fe977d122 41 void funcionNormal()
javiervicente 1:987fe977d122 42 {
javiervicente 1:987fe977d122 43 if(temporizador>1.0) {
javiervicente 1:987fe977d122 44 intrementarReloj();
javiervicente 1:987fe977d122 45 } else if(boton==botonPulsado) {
javiervicente 1:987fe977d122 46 tiempoPulsado.reset();
javiervicente 1:987fe977d122 47 tiempoPulsado.start();
javiervicente 1:987fe977d122 48 estado=esperandoSoltarConf;
javiervicente 0:4182cf86e3bd 49 }
javiervicente 0:4182cf86e3bd 50 }
javiervicente 0:4182cf86e3bd 51
javiervicente 1:987fe977d122 52
javiervicente 1:987fe977d122 53
javiervicente 1:987fe977d122 54 void funcionEsperandoSoltarConf()
javiervicente 0:4182cf86e3bd 55 {
javiervicente 1:987fe977d122 56 if(temporizador>1.0) {
javiervicente 1:987fe977d122 57 intrementarReloj();
javiervicente 1:987fe977d122 58 } else if (boton==botonNoPulsado) {
javiervicente 1:987fe977d122 59 if(tiempoPulsado>1) {
javiervicente 1:987fe977d122 60 estado=esperandoPulsarMin;
javiervicente 1:987fe977d122 61 pc.printf("Configurar Minutos\n");
javiervicente 1:987fe977d122 62 } else {
javiervicente 1:987fe977d122 63 estado=normal;
javiervicente 1:987fe977d122 64 }
javiervicente 1:987fe977d122 65 }
javiervicente 1:987fe977d122 66
javiervicente 1:987fe977d122 67 }
javiervicente 1:987fe977d122 68
javiervicente 1:987fe977d122 69
javiervicente 1:987fe977d122 70 void funcionEsperandoPulsarMin()
javiervicente 1:987fe977d122 71 {
javiervicente 1:987fe977d122 72 if (boton==botonPulsado) {
javiervicente 1:987fe977d122 73 tiempoPulsado.reset();
javiervicente 1:987fe977d122 74 tiempoPulsado.start();
javiervicente 1:987fe977d122 75 estado=esperandoSoltarMin;
javiervicente 0:4182cf86e3bd 76 }
javiervicente 0:4182cf86e3bd 77 }
javiervicente 0:4182cf86e3bd 78
javiervicente 1:987fe977d122 79 void funcionEsperandoSoltarMin()
javiervicente 0:4182cf86e3bd 80 {
javiervicente 1:987fe977d122 81 if (boton==botonNoPulsado) {
javiervicente 1:987fe977d122 82 if(tiempoPulsado>1) {
javiervicente 1:987fe977d122 83 estado=esperandoPulsarHoras;
javiervicente 1:987fe977d122 84 pc.printf("Configurar Horas\n");
javiervicente 1:987fe977d122 85 } else {
javiervicente 1:987fe977d122 86 minutos++;
javiervicente 1:987fe977d122 87 if (minutos==60) {
javiervicente 1:987fe977d122 88 minutos=0;
javiervicente 1:987fe977d122 89 }
javiervicente 1:987fe977d122 90
javiervicente 1:987fe977d122 91 pc.printf("%02d:%02d:%02d\n",horas,minutos,segundos);
javiervicente 1:987fe977d122 92 estado=esperandoPulsarMin;
javiervicente 1:987fe977d122 93 }
javiervicente 0:4182cf86e3bd 94 }
javiervicente 0:4182cf86e3bd 95 }
javiervicente 0:4182cf86e3bd 96
javiervicente 1:987fe977d122 97 void funcionEsperandoPulsarHoras()
javiervicente 0:4182cf86e3bd 98 {
javiervicente 1:987fe977d122 99 if (boton==botonPulsado) {
javiervicente 1:987fe977d122 100 tiempoPulsado.reset();
javiervicente 1:987fe977d122 101 tiempoPulsado.start();
javiervicente 1:987fe977d122 102 estado=esperandoSoltarHoras;
javiervicente 0:4182cf86e3bd 103 }
javiervicente 0:4182cf86e3bd 104 }
javiervicente 0:4182cf86e3bd 105
javiervicente 1:987fe977d122 106 void funcionEsperandoSoltarHoras()
javiervicente 1:987fe977d122 107 {
javiervicente 1:987fe977d122 108 if (boton==botonNoPulsado) {
javiervicente 1:987fe977d122 109 if(tiempoPulsado>1) {
javiervicente 1:987fe977d122 110 estado=normal;
javiervicente 1:987fe977d122 111 } else {
javiervicente 1:987fe977d122 112 horas++;
javiervicente 1:987fe977d122 113 if (horas==24) {
javiervicente 1:987fe977d122 114 horas=0;
javiervicente 1:987fe977d122 115 }
javiervicente 1:987fe977d122 116
javiervicente 1:987fe977d122 117 pc.printf("%02d:%02d:%02d\n",horas,minutos,segundos);
javiervicente 1:987fe977d122 118 estado=esperandoPulsarHoras;
javiervicente 1:987fe977d122 119 }
javiervicente 1:987fe977d122 120 }
javiervicente 1:987fe977d122 121 }
javiervicente 1:987fe977d122 122
javiervicente 1:987fe977d122 123
javiervicente 0:4182cf86e3bd 124 int main()
javiervicente 0:4182cf86e3bd 125 {
javiervicente 0:4182cf86e3bd 126 pc.baud(115200);
javiervicente 1:987fe977d122 127 estado=normal;
javiervicente 1:987fe977d122 128 temporizador.start();
javiervicente 0:4182cf86e3bd 129 while(1) {
javiervicente 0:4182cf86e3bd 130 switch(estado) {
javiervicente 1:987fe977d122 131 case normal:
javiervicente 1:987fe977d122 132 funcionNormal();
javiervicente 0:4182cf86e3bd 133 break;
javiervicente 1:987fe977d122 134 case esperandoSoltarConf:
javiervicente 1:987fe977d122 135 funcionEsperandoSoltarConf();
javiervicente 1:987fe977d122 136 break;
javiervicente 1:987fe977d122 137 case esperandoPulsarHoras:
javiervicente 1:987fe977d122 138 funcionEsperandoPulsarHoras();
javiervicente 0:4182cf86e3bd 139 break;
javiervicente 1:987fe977d122 140 case esperandoSoltarHoras:
javiervicente 1:987fe977d122 141 funcionEsperandoSoltarHoras();
javiervicente 0:4182cf86e3bd 142 break;
javiervicente 1:987fe977d122 143 case esperandoPulsarMin:
javiervicente 1:987fe977d122 144 funcionEsperandoPulsarMin();
javiervicente 1:987fe977d122 145 break;
javiervicente 1:987fe977d122 146 case esperandoSoltarMin:
javiervicente 1:987fe977d122 147 funcionEsperandoSoltarMin();
javiervicente 0:4182cf86e3bd 148 break;
javiervicente 0:4182cf86e3bd 149 }
javiervicente 0:4182cf86e3bd 150 }
javiervicente 0:4182cf86e3bd 151 }