javier vicente
/
MASTER_MAQUINA_RELOJ
Reloj
Diff: main.cpp
- Revision:
- 1:987fe977d122
- Parent:
- 0:4182cf86e3bd
--- a/main.cpp Thu Dec 09 22:07:15 2021 +0000 +++ b/main.cpp Thu Dec 09 23:12:37 2021 +0000 @@ -4,71 +4,147 @@ #define botonNoPulsado 1 #define tiempoMaximo 0.5 +int horas=0; +int minutos=0; +int segundos=0; Serial pc(USBTX, USBRX); // tx, rx DigitalOut led(LED1); DigitalIn boton(USER_BUTTON); Timer temporizador; -enum estados {esperandoPulsacion,esperandoSoltarBoton, esperandoSegundaPulsacion,esperandoSoltarSegundaPulsacion}; +Timer tiempoPulsado; + +enum estados {normal,esperandoSoltarConf,esperandoPulsarHoras,esperandoSoltarHoras,esperandoPulsarMin,esperandoSoltarMin}; estados estado; - -void funcionEsperandoPulsacion() +void intrementarReloj() { - if(boton==botonPulsado) { + if(temporizador>1.0) { temporizador.reset(); - temporizador.start(); - estado=esperandoSoltarBoton; - pc.printf("Boton pulsado\n"); + segundos++; + if (segundos==60) { + segundos=0; + minutos++; + if(minutos==60) { + minutos=0; + horas++; + if(horas==24) { + horas=0; + } + } + } + } + pc.printf("%02d:%02d:%02d\n",horas,minutos,segundos); +} + +void funcionNormal() +{ + if(temporizador>1.0) { + intrementarReloj(); + } else if(boton==botonPulsado) { + tiempoPulsado.reset(); + tiempoPulsado.start(); + estado=esperandoSoltarConf; } } -void funcionEsperandoSoltarBoton() + + +void funcionEsperandoSoltarConf() { - if(boton==botonNoPulsado) { - estado=esperandoSegundaPulsacion; - pc.printf("Boton soltado\n"); + if(temporizador>1.0) { + intrementarReloj(); + } else if (boton==botonNoPulsado) { + if(tiempoPulsado>1) { + estado=esperandoPulsarMin; + pc.printf("Configurar Minutos\n"); + } else { + estado=normal; + } + } + +} + + +void funcionEsperandoPulsarMin() +{ + if (boton==botonPulsado) { + tiempoPulsado.reset(); + tiempoPulsado.start(); + estado=esperandoSoltarMin; } } -void funcionEsperandoSegundaPulsacion() +void funcionEsperandoSoltarMin() { - if(temporizador.read()>tiempoMaximo) { - estado=esperandoPulsacion; - pc.printf("Emporizador expirado\n"); - } else if(boton==botonPulsado) { - led=!led; - estado=esperandoSoltarSegundaPulsacion; - pc.printf("Doble Click\n"); + if (boton==botonNoPulsado) { + if(tiempoPulsado>1) { + estado=esperandoPulsarHoras; + pc.printf("Configurar Horas\n"); + } else { + minutos++; + if (minutos==60) { + minutos=0; + } + + pc.printf("%02d:%02d:%02d\n",horas,minutos,segundos); + estado=esperandoPulsarMin; + } } } -void funcionEsperandoSoltarSegundaPulsacion() +void funcionEsperandoPulsarHoras() { - if(boton==botonNoPulsado) { - estado=esperandoPulsacion; - pc.printf("Boton soltado Segunda pulsacion\n"); + if (boton==botonPulsado) { + tiempoPulsado.reset(); + tiempoPulsado.start(); + estado=esperandoSoltarHoras; } } +void funcionEsperandoSoltarHoras() +{ + if (boton==botonNoPulsado) { + if(tiempoPulsado>1) { + estado=normal; + } else { + horas++; + if (horas==24) { + horas=0; + } + + pc.printf("%02d:%02d:%02d\n",horas,minutos,segundos); + estado=esperandoPulsarHoras; + } + } +} + + int main() { pc.baud(115200); - estado=esperandoPulsacion; + estado=normal; + temporizador.start(); while(1) { switch(estado) { - case esperandoPulsacion: - funcionEsperandoPulsacion(); + case normal: + funcionNormal(); break; - case esperandoSoltarBoton: - funcionEsperandoSoltarBoton(); + case esperandoSoltarConf: + funcionEsperandoSoltarConf(); + break; + case esperandoPulsarHoras: + funcionEsperandoPulsarHoras(); break; - case esperandoSegundaPulsacion: - funcionEsperandoSegundaPulsacion(); + case esperandoSoltarHoras: + funcionEsperandoSoltarHoras(); break; - case esperandoSoltarSegundaPulsacion: - funcionEsperandoSoltarSegundaPulsacion(); + case esperandoPulsarMin: + funcionEsperandoPulsarMin(); + break; + case esperandoSoltarMin: + funcionEsperandoSoltarMin(); break; } }