Buenos dias, estoy trabajando en un proyecto con arduino en donde basicamente lo que quiero hacer es que al presionar el boton 1 vez, el programa haga o ejecute una acción (en mi caso enviare mensajes a través de un modulo de comunicación), al presionar el boton 2 veces seguidas se ejecute otra accion y al presionar el boton 3 veces seguidas ejecutar otra accion diferente.
Mi problema es que no encuentro como hacer que mi programa espere a que yo pulse 3 veces o 2 veces, siempre me detecta como que lo presione 1 vez. Ya lo intente con la libreria GFButton pero igual me genera un problema similar. No se si deba usar una funcion millis() para hacer esto, pero igual no sabría como usarla para lograrlo.
Soy nuevo en esto así que les agradecería si me pueden ayudar en esto.
Tienes varios problemas incluidos en la idea que persigues.
Cuando presionas un botón este rebota, asi que debes asegurarte el estado del boton, eso se logra con una rutina antirebote.
Supongamos que tu boton con 20 mseg presenta estados claros y sin rebotes. Entonces deberias indicar una ventana de tiempo usando millis() claro está en el cual cuentas pulsaciones. Digamos que dicha ventana debe ser algo lógico para nuestras velocidades de reacción. Digamos 300mseg o algo menor, pero no mucho menor.
Entonces cada 300 meg detectas si has pulsado y cuentas pulsaciones y decides.
Si no sabes usar millis() considera como has dicho una libreria para la parte antirebote. Bounce2 es una que solemos usar en el foro pero obviamente la que has indicado debería servir.
El ejemplo GFButton-advanced.ino de tu libreria GFBUtton con el procedimiento getclicks() podria servir.
Prueba a ver si reporta lo que necesitas.
Entiendo, investigaré un poco mas sobre lo que me haz comentado y lo pasare a código para ver si me funciona.
La lógica en realidad la tenia pensado mas o menos ya así, pero simplemente no entendía como lograrlo, pero me haz aclarado bastante la mente con tus comentarios, te agradezco el tiempo para explicármelo.
Si usas esa función de la libreria deberias poder detectar y contar clicks, que es lo que buscas.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.