javier vicente
/
MASTER_MAQUINA_RELOJ
Reloj
main.cpp@1:987fe977d122, 2021-12-09 (annotated)
- Committer:
- javiervicente
- Date:
- Thu Dec 09 23:12:37 2021 +0000
- Revision:
- 1:987fe977d122
- Parent:
- 0:4182cf86e3bd
rejos
Who changed what in which revision?
User | Revision | Line number | New 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 | } |