Olá pessoal, tudo bem?
Escrevi um código para um teclado matricial (4x4), com debounce e registro para pressionar e soltar.
Está 100% funcional, respondendo 100% do jeito que desejo, mas estou um pouco intrigado, pois acho que está muito mal otimizado. Gostaria da opinião de vocês.
O principio de funcionamento é simples.
1- Todas as linhas (pcf8574. pino 0 á 3) ficam em estado ALTO, pois possuem um resistor de 10k em pullup
2- todas as colunas (pcf8574, pino 4 á 7) permanecem em estado ALTO quando nenhuma leitura é realizada.
3- Coluna 1 irá para LOW, então será verificado o estado dos pinos 0 á 3. Depois, a coluna retorna para ALTO.
4- Isso será repetido com a coluna 2, 3 e 4.
5- no final, teremos 4 sequencias de 0 e 1. Que representam o estado de cada botão.
5.1 - no meu código, salvei os valores em um array.
6- 0 = pressionado. 1 = não pressionado.
Link da lib: https://github.com/xreef/PCF8574_library
.Ino em anexo.
Segue a foto do esquema (botões e pcf8574)