javier vicente
/
MASTER_MAQUINA_RELOJ
Reloj
Diff: main.cpp
- Revision:
- 0:4182cf86e3bd
- Child:
- 1:987fe977d122
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 09 22:07:15 2021 +0000 @@ -0,0 +1,75 @@ +#include "mbed.h" + +#define botonPulsado 0 +#define botonNoPulsado 1 +#define tiempoMaximo 0.5 + + +Serial pc(USBTX, USBRX); // tx, rx + +DigitalOut led(LED1); +DigitalIn boton(USER_BUTTON); +Timer temporizador; +enum estados {esperandoPulsacion,esperandoSoltarBoton, esperandoSegundaPulsacion,esperandoSoltarSegundaPulsacion}; +estados estado; + + +void funcionEsperandoPulsacion() +{ + if(boton==botonPulsado) { + temporizador.reset(); + temporizador.start(); + estado=esperandoSoltarBoton; + pc.printf("Boton pulsado\n"); + } +} + +void funcionEsperandoSoltarBoton() +{ + if(boton==botonNoPulsado) { + estado=esperandoSegundaPulsacion; + pc.printf("Boton soltado\n"); + } +} + +void funcionEsperandoSegundaPulsacion() +{ + if(temporizador.read()>tiempoMaximo) { + estado=esperandoPulsacion; + pc.printf("Emporizador expirado\n"); + } else if(boton==botonPulsado) { + led=!led; + estado=esperandoSoltarSegundaPulsacion; + pc.printf("Doble Click\n"); + } +} + +void funcionEsperandoSoltarSegundaPulsacion() +{ + if(boton==botonNoPulsado) { + estado=esperandoPulsacion; + pc.printf("Boton soltado Segunda pulsacion\n"); + } +} + +int main() +{ + pc.baud(115200); + estado=esperandoPulsacion; + while(1) { + switch(estado) { + case esperandoPulsacion: + funcionEsperandoPulsacion(); + break; + case esperandoSoltarBoton: + funcionEsperandoSoltarBoton(); + break; + case esperandoSegundaPulsacion: + funcionEsperandoSegundaPulsacion(); + break; + case esperandoSoltarSegundaPulsacion: + funcionEsperandoSoltarSegundaPulsacion(); + break; + } + } +}