Esquema: Los Pulsadores
Los pulsadores son simples pulsadores momentaneos normalmente abiertos, conectados a tierra. Como activamos el weak pullup del Arduino en estas entradas, no es necesaria ninguna resistencia, y el "debouncing" lo haremos por software.
Yo he utilizado pulsadores que no hacen clic, porque en este caso me gusta mas asi, pero tambien los hay que hacen clic.
Para realizar el debouncing (evitar rebotes), y los eventos para cada boton, he utilizado una libreria llamada Onebutton. Con esta libreria se pueden definir botones, y para cada uno configurar eventos segun se necesite: Al pulsar, al pulsar largo, al pulsar doble click, etc....
En este caso yo he modificado la libreria para que tambien se pueda tener botones "virtuales" que se activan al pulsar dos botones a la vez. Asi tambien se pueden definir eventos para botones dobles (y triples de hecho)
Al principio definimos los pulsadores:
OneButton button1(BUT1, 1);
OneButton button2(BUT2, 1);
OneButton button3(BUT3, 1);
OneButton button4(BUT4, 1);
OneButton buttonBANK(BUT5, 1);
TwoButton button6(BUT1, BUT2, 1);
TwoButton button7(BUT2, BUT3, 1);
TwoButton button8(BUT3, BUT4, 1);
TwoButton button9(BUT4, BUT5, 1);
BUT1, BUT2, etc... son los pines que utilizamos, estan definidos mas arriba en el codigo con #define
y despues asignamos las funciones que se llamaran en cada evento:
button1.attachClick(click1);
button2.attachClick(click2);
button3.attachClick(click3);
button4.attachClick(click4);
buttonBANK.attachClick(clickBANK);
buttonBANK.attachLongPressStart(longclickBANK);
button6.attachClick(click6);
button7.attachClick(click7);
button8.attachClick(click8);
button9.attachClick(click9);
Aqui vemos que tenemos definida una funcion para el click de cada pulsador (incluidos los "virtuales" al pulsar dos a la vez), y una para la pulsacion larga (pulsar y mantener) para el boton de cambio de banco/panel
Luego en la funciona loop() hay que meter una linea para cada boton para que refresque estados.
button1.tick();
button2.tick();
button3.tick();
button4.tick();
buttonBANK.tick();
button6.tick(button1, button2);
button7.tick(button2, button3);
button8.tick(button3, button4);
button9.tick(button4, buttonBANK);
Y definir que hacer en las funciones que hemos mencionado (click1, click2...)
Los pulsadores son simples pulsadores momentaneos normalmente abiertos, conectados a tierra. Como activamos el weak pullup del Arduino en estas entradas, no es necesaria ninguna resistencia, y el "debouncing" lo haremos por software.
Yo he utilizado pulsadores que no hacen clic, porque en este caso me gusta mas asi, pero tambien los hay que hacen clic.
Para realizar el debouncing (evitar rebotes), y los eventos para cada boton, he utilizado una libreria llamada Onebutton. Con esta libreria se pueden definir botones, y para cada uno configurar eventos segun se necesite: Al pulsar, al pulsar largo, al pulsar doble click, etc....
En este caso yo he modificado la libreria para que tambien se pueda tener botones "virtuales" que se activan al pulsar dos botones a la vez. Asi tambien se pueden definir eventos para botones dobles (y triples de hecho)
Al principio definimos los pulsadores:
OneButton button1(BUT1, 1);
OneButton button2(BUT2, 1);
OneButton button3(BUT3, 1);
OneButton button4(BUT4, 1);
OneButton buttonBANK(BUT5, 1);
TwoButton button6(BUT1, BUT2, 1);
TwoButton button7(BUT2, BUT3, 1);
TwoButton button8(BUT3, BUT4, 1);
TwoButton button9(BUT4, BUT5, 1);
BUT1, BUT2, etc... son los pines que utilizamos, estan definidos mas arriba en el codigo con #define
y despues asignamos las funciones que se llamaran en cada evento:
button1.attachClick(click1);
button2.attachClick(click2);
button3.attachClick(click3);
button4.attachClick(click4);
buttonBANK.attachClick(clickBANK);
buttonBANK.attachLongPressStart(longclickBANK);
button6.attachClick(click6);
button7.attachClick(click7);
button8.attachClick(click8);
button9.attachClick(click9);
Aqui vemos que tenemos definida una funcion para el click de cada pulsador (incluidos los "virtuales" al pulsar dos a la vez), y una para la pulsacion larga (pulsar y mantener) para el boton de cambio de banco/panel
Luego en la funciona loop() hay que meter una linea para cada boton para que refresque estados.
button1.tick();
button2.tick();
button3.tick();
button4.tick();
buttonBANK.tick();
button6.tick(button1, button2);
button7.tick(button2, button3);
button8.tick(button3, button4);
button9.tick(button4, buttonBANK);
Y definir que hacer en las funciones que hemos mencionado (click1, click2...)