Hola a todos!
He hecho un programilla para un shield Joystick de 2 potenciómetros y 7 buttons. Lo he agregado mas abajo, y consta de:
Una función checkbutton() para coger y guardar el estado de los 2 potenciómetros y los 7 buttons. La función incluye debounce en los 7 buttons y un hold para el joystick, si nos quedamos en una posición va marcando cada 500 millis la posición.
Una función actionbutton() que, si hay cambios en los datos, manda a Serial el button o joystick que se ha pulsado o soltado.
Mientras construía el programa, he utilizado un for() para saber el estado de cada button, y oye, funciona de maravilla. Es el código que hay comentado en el inicio de la función actionbutton().
La sorpresa me viene cuando sustituyo el for() por 7 ifs, para poder tener opciones diferentes para cada button, es decir, if(estado[x_button]) { hago loque quiero aquí con cada button}.
Pero cuando lo pruebo, todo son errores. Con un debug de las variables justo antes de la función actionbutton() no hay cambio de variables, pero marca algun boton como pressed o released.
He probado de mover la función antes de void loop(), después de Void loop(), sin función con el código dentro de void loop(), con bucles else if y sin...Los resultados son diferentes. Lee falsos push de algun button en bucle infernal, o cambia todos los botones de entrada y haciendo bucle de escritura en algun button.
Estoy seguro que el error es mío, pero, alguien sabe algun porqué?
Porqué funciona de maravilla con for(), y intentar hacer lo mismo manualmente con if() no funciona?
Agradecería si alguien tiene algo que decir...
JSTK_7Btn_Dbce_holdV2.ino (5.92 KB)